zoukankan      html  css  js  c++  java
  • 【USACO 3.1】Stamps (完全背包)

    题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200。

    题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出dp[j]=min(dp[j],dp[j-a]+1)。j从a到k*10000顺序枚举,因为类似于完全背包。

    http://train.usaco.org/usacoprob2?a=fSgPyIazooa&S=stamps

    /*
    TASK:stamps
    LANG:C++
    */
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #define INF 0x3f3f3f3f
    using namespace std;
    int n,k;
    int dp[2000005];
    int main(){
        freopen("stamps.in","r",stdin);
        freopen("stamps.out","w",stdout);
        memset(dp,INF,sizeof dp);
        dp[0]=0;
        scanf("%d%d",&k,&n);
        int a;
        for(int i=1;i<=n;i++){
            scanf("%d",&a);
            for(int j=a;j<=k*10000;j++)
                dp[j]=min(dp[j],dp[j-a]+1);
        }
        for(int i=1;;i++)
            if(dp[i]>k){
                printf("%d
    ",i-1);
                break;
            }
        /*
       Test 1: TEST OK [0.011 secs, 11992 KB]
       Test 2: TEST OK [0.011 secs, 11992 KB]
       Test 3: TEST OK [0.011 secs, 11992 KB]
       Test 4: TEST OK [0.011 secs, 11992 KB]
       Test 5: TEST OK [0.011 secs, 11992 KB]
       Test 6: TEST OK [0.011 secs, 11992 KB]
       Test 7: TEST OK [0.000 secs, 11992 KB]
       Test 8: TEST OK [0.011 secs, 11992 KB]
       Test 9: TEST OK [0.011 secs, 11992 KB]
       Test 10: TEST OK [0.076 secs, 11992 KB]
       Test 11: TEST OK [0.216 secs, 11992 KB]
       Test 12: TEST OK [0.076 secs, 11992 KB]
       Test 13: TEST OK [0.119 secs, 11992 KB]
        */
        return 0;
    }

      

  • 相关阅读:
    通过代码去执行testNG用例
    启动jenkins服务错误
    linux 添加用户到sudo中
    通过jenkins API去build一个job
    iptables
    比较git commit 两个版本之间次数
    linux awk命令详解
    cron和crontab
    工作随笔——CentOS6.4支持rz sz操作
    Jenkins进阶系列之——15Maven获取Jenkins的Subversion的版本号
  • 原文地址:https://www.cnblogs.com/flipped/p/6075558.html
Copyright © 2011-2022 走看看