饭卡

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4160    Accepted Submission(s): 1410

Problem Description
电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。
某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。
Input
多组数据。对于每组数据:
第一行为正整数n,表示菜的数量。n<=1000。
第二行包括n个正整数,表示每种菜的价格。价格不超过50。
第三行包括一个正整数m,表示卡上的余额。m<=1000。

n=0表示数据结束。

Output
对于每组输入,输出一行,包含一个整数,表示卡上可能的最小余额。
Sample Input
1 50 5 10 1 2 3 2 1 1 2 3 2 1 50 0
Sample Output
-45 32
Source
UESTC 6th Programming Contest Online
Recommend
lcy
code:
 1 #include<iostream>
 2 #include<cmath>
 3 #include<algorithm>
 4 using namespace std;
 5
 6 int dp[1010];
 7 int data[1010];
 8 int n,m;
 9
10 int cmp(int a,int b)
11 {
12     return a>b;
13 }
14
15 int main()
16 {
17     int i,j;
18     while(~scanf("%d",&n),n)
19     {
20         for(i=0;i<n;i++)
21             scanf("%d",&data[i]);
22         scanf("%d",&m);
23         if(m<5)
24         {
25             printf("%d\n",m);
26             continue;
27         }
28         sort(data,data+n,cmp);
29         m-=5;
30         for(i=0;i<=m;i++)
31             dp[i]=m;
32         for(i=1;i<n;i++)
33         {
34             for(j=m;j>=data[i];j--)
35             {
36                 dp[j]=dp[j]>dp[j-data[i]]-data[i]?dp[j-data[i]]-data[i]:dp[j];
37             }
38         }
39         int gmin=9999999;
40         for(i=0;i<=m;i++)
41             if(dp[i]<gmin)
42                 gmin=dp[i];
43         printf("%d\n",gmin+5-data[0]);
44     }
45     return 0;
46 }

HDOJ---2546 饭卡[DP01背包问题]相关推荐

  1. HDOJ 2546饭卡(01背包问题)

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如 ...

  2. hdu 2546 饭卡(P01-背包)

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

  3. HDU 2546 饭卡(贪心+DP)

    题目链接 几个月之前做的一个题了,开始想时就看出应该是个01背包问题,又发现不太一样,貌似应该是有种贪心策略,把最大的挑出来最后还有5块钱的再买,剩下的体积用01背包去求最优选择,当时WA了3次,以为 ...

  4. HDU 2546 饭卡(01背包裸题)

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

  5. HDU 2546 饭卡 01背包变形

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

  6. Hdu 2546 饭卡

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

  7. hdu 2546 饭卡【01背包】

    题目链接:https://vjudge.net/contest/103424#problem/C 饭卡                                Time Limit: 5000/ ...

  8. hdu 2546 饭卡(01背包)

    题意:只要最后留下的钱够5元,就可以买下最贵的食物,使得余额最低,其他的钱的使用就是一个最大背包问题了. 代码: #include<iostream> #include<cstrin ...

  9. hdu 2546 饭卡【贪心+01背包基础题】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2546 http://acm.hust.edu.cn/vjudge/contest/view.action ...

最新文章

  1. 专线数据维护07/05
  2. MySql错误1045 Access denied for user 'root'@'localhost' (using password:YES)
  3. 用android ndk编译ffmpeg,AndroidNDK交叉编译FFMPEG
  4. Java如何解决乱码问题
  5. 【LeetCode】剑指 Offer 44. 数字序列中某一位的数字
  6. 将摄像头拍摄图像或者本地图片设置为头像的方法
  7. Android 自定义Dialog 去除阴影
  8. iOS开发之iOS11频繁刷新TableView向下偏移的问题
  9. 学以致提高学生操作计算机能力,学用结合,学以致用
  10. Android 手机做麦克风扩音器demo
  11. JavaScript基础知识总结笔记
  12. JavaScript中怪异现象true和false
  13. 如何在Microsoft PowerPoint中绘制和操纵箭头
  14. 梁文道:盗版电影网站死去,我们仍然不见光明
  15. Zotero安装与同步配置(PC+ipad双平台)
  16. 修改C盘用户的中文名为英文名
  17. icloud 照片导出_我的照片流和iCloud照片之间有什么区别?
  18. 数据分析师 招聘要求
  19. ACL 2021 | ChineseBERT:香侬科技提出融合字形与拼音信息的中文预训练模型
  20. 【旅游攻略】:帽儿山旅游攻略

热门文章

  1. java des3加密_JAVA加密算法(3)- 对称加密算法(DES、3DES、AES)
  2. 如何进入zabbix的wab界面_如何不用光盘重装系统呢?
  3. android layerlist bitmap,android shape类似的 另一个 高端用法:layer-list
  4. 在MySQL查询山东省男生信息_MySQL-查询
  5. ubuntu18 防火墙关闭_Ubuntu 18.04 关闭及开启防火墙
  6. mysql sqlstate 08001_关于Toad连接DB2的sqlstate=08001错误
  7. Spring MVC源码——Root WebApplicationContext
  8. 运行shell脚本时怎么知道jdk路径_Shell写脚本关于ssh执行jar包,需要刷新JDK路径的问题...
  9. 蓝牙耳机声音一顿一顿的_线控耳机党阵地转移成功,OPPO这款TWS耳机体验满分...
  10. mysql 5.5 client 字符集_rhel4 mysql5.5 字符集_character set