开始写成01背包的形式,求m元可买物品价值的最大值

dp[j] = max(dp[j], dp[j - pri[i]] + pri[i])

结果为m - dp[m]

但后来发现是有问题的, 比如这组过不去

5
15 14 13 13 42
60

正解应该m-5 >= 0时买尽量多的物品,然后剩下的钱买价值最大的物品。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<string>
 6 #include<algorithm>
 7 #include<map>
 8 #include<queue>
 9 #include<vector>
 #include<cmath>
 using namespace std;
 typedef long long LL;
 const int N = , INF = 0x3F3F3F3F;
 #define MS(a, num) memset(a, num, sizeof(a))
 int pri[N];
 int num[];
 int main(){
     freopen("2546.txt", "r", stdin);
     int n, m;
     //int *dp = num + 1000;
     while(~scanf("%d",  &n ) && n){
         MS(num, );
         for(int i =  ;i < n; i++){
             scanf("%d", &pri[i]);
         }
         scanf("%d", &m);
         sort(pri, pri + n);
         if(m < ){
             cout<<m<<'\n';
             continue;
         }
         m -= ;
         for(int i= ; i < n - ; i++){
             for(int j = m; j >= pri[i]; j--){
                 num[j] = max(num[j], num[j - pri[i]] + pri[i]);
             }
         }
         printf("%d\n", m +  - pri[n - ] - num[m]);
     }
     return ;

41 }

HDU2546 饭卡(背包)的更多相关文章

  1. [HDU2546]饭卡<dp 01背包>

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 #题目描述: 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前, ...

  2. HDU2546饭卡---(DP 经典背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory L ...

  3. hdu2546 饭卡 01-背包问题

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 Problem ...

  4. hdu2546 饭卡

    Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负) ...

  5. HDU2546:饭卡(01背包)

    HDU2546:饭卡 http://acm.hdu.edu.cn/showproblem.php?pid=2546 当我们遇到问题选择物体的价值和顺序相关时就需要,排完序后对其01处理.这题因为当我们 ...

  6. 饭卡-HDU2546(01背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory L ...

  7. 【贪心+背包】【HDU2546】【饭卡】

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  8. cdoj 31 饭卡(card) 01背包

    饭卡(card) Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/31 Des ...

  9. 饭卡------HDOJ杭电2546(还是01背包!!!!!!)

    Problem Description 电子科大本部食堂的饭卡有一种非常诡异的设计,即在购买之前推断剩余金额. 假设购买一个商品之前,卡上的剩余金额大于或等于5元,就一定能够购买成功(即使购买后卡上剩 ...

随机推荐

  1. 线段树区间更新&&求和poj3486

    给出了一个序列,你需要处理如下两种询问. ≤ c ≤ ). "Q a b" 询问[a, b]区间中所有值的和. Input 第一行包含两个整数N, Q. ≤ N,Q ≤ . 第二行 ...

  2. Java 重写(Overriding)和重载(Overloading)

    方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现. 重写是父类与子类之间多态性的一种表现 重载是一类中多态性的一种表现.

  3. 10个php笔试题

    Q1 第一个问题关于弱类型 $str1 = 'yabadabadoo'; $str2 = 'yaba'; if (strpos($str1,$str2)) { echo "/"&q ...

  4. 交叉编译alsa声卡驱动

    變異成靜態 ./configure --target=arm-linux --enable-shared=no --enable-static=yes 編譯成動態 ./configure --targ ...

  5. gedit配置记

    gedit配置记 起因 突然感觉sublime用用这里那里不方便(虽然很好看> >),然后稍微手调了一下gedit发现gedit还是非常可用的(雾)... 阶段一 我感觉sublime各种 ...

  6. 获取shell脚本自身所在目录的Shell脚本分享

    前几天写的七牛的参赛demo,用bash写了一个便捷安装的脚本,涉及到了路径相关的判断,从stackoverflow,加上自己的实践整理一下. 简单版 下面是一个最简单的实现,可以解决大多数问题,缺陷 ...

  7. 【IDEA】IDEA 如何设置编辑器字体大小

    intellij idea 如何更改编辑器文本字体和大小   换上了intellij idea之后,第一件事就是想要改变下文字字体,因为在我这个27寸的2k分辨率的屏幕上,文字显然太小了. intel ...

  8. int型整数中2进制中含有1的个数。

    int func(x) { int countx =0; while(x) { countx ++; x = x&(x-1); } return countx; } 解释下思路: 1.任何一个 ...

  9. 数位DP题目汇总

    Google Code Jam 2014 Round 1B Problem B hdu 2089 hdu 3555 uestc 250 (原1307) hdu 3652 hdu 3709 Light ...

  10. iOS App Extensions 推荐文章

    写的非常不错,读完后,基本的extension的套路就清楚了,也是我们的园友写的,感谢他: http://www.cnblogs.com/xdream86/p/3855932.html 下面这个教程是 ...