zoukankan      html  css  js  c++  java
  • 收银员

    在这里插入图片描述
    .
    .
    .
    .
    .
    .
    分析
    完成任务是使所有物品全部买或偷到,而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;
    }
    
  • 相关阅读:
    练习12
    练习11
    练习10(图片题)
    练习9(第九章习题)
    练习8(图片题)
    练习5
    练习4
    对象的赋值与比较
    静态方法
    静态变量
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/10292834.html
Copyright © 2011-2022 走看看