收银员

在这里插入图片描述
.
.
.
.
.
.
分析
完成任务是使所有物品全部买或偷到,而Bob有多少扫描时间便能偷多少物品,所以扫描了某一物品,能带走的物品便是扫描时间,加上1(也就是你正在扫描的这个物品),在这里可以直接把扫描时间+1,那么现在扫描时间就等价与能带走的物品个数了。

之后我们将扫描时间看作体积,价格看作价值。那么题目便等价与把背包体积至少装至n的最小价值,就和01背包一样了。
.
.
.
.
.
.
程序:

#include<iostream>
#include<cstdio>
using namespace std;
int n,m=0,t[2001],c[2001];
long long f[5000],ans=1<<30;

int main()
{
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
    {
        scanf("%d%d",&t[i],&c[i]);
        t[i]++;
        if (t[i]>m) m=t[i];
    }
    m+=n;
    for(int j=1;j<=m;j++)
    	f[j]=1<<30;
    f[0]=0;
    for (int i=1;i<=n;i++)
    	for (int j=m;j>=t[i];j--)
    	{
    		f[j]=min(f[j],f[j-t[i]]+c[i]);
    		if (j>=n) ans=min(ans,f[j]);
    	}
    printf("%d",ans);
    return 0;
}

转载于:https://www.cnblogs.com/YYC-0304/p/10292834.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值