饭卡

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

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
很经典的一道01背包题,要注意的是这里只要剩余的钱不低于5元,就可以购买任何一件物品,所以5在这道题中是很特许的,再使用01背包之前,我们首先要在现在所拥有的余额中保留5元,用这五元去购买最贵的物品,而剩下的钱就是背包的总容量,可以随意使用,因此可得代码
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int a[10000];
int dp[10000];
int main()
{int n;while(scanf("%d",&n)!=-1){memset(a,0,sizeof(a));memset(dp,0,sizeof(dp));if(n==0)break;for(int i=0;i<n;i++)scanf("%d",&a[i]);sort(a,a+n);int we=a[n-1];int m;scanf("%d",&m);if(m<5){printf("%d\n",m);}else{m=m-5;//取出5元用于购买最贵的物品 for(int i=0;i<n-1;i++){for(int j=m;j>=a[i];j--){dp[j]=max(dp[j],dp[j-a[i]]+a[i]);}}printf("%d\n",m+5-we-dp[m]);}}
}

饭卡,,,之01背包相关推荐

  1. hdu 2546 饭卡【01背包】

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

  2. hdu 2546 饭卡(01背包)

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

  3. 【Cqupt热身赛】诡异的饭卡 【01背包、动态规划】

    DescriptionDescriptionDescription 海女美术大学食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于555元,就一定可以购 ...

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

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

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

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

  6. 【HDU - 2546】饭卡 (dp,0-1背包,贪心思想)

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

  7. 饭卡问题(0-1背包的变形)

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

  8. hdu 2546 饭卡——一道简单的 01背包

    今天讲的是动态规划,学长们拉了13道题让我们做一下,一下午大概4小时,做了5道题(还是太弱了 摊手) 题意: 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上 ...

  9. HDU 2546 饭卡 01背包变形

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

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

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

最新文章

  1. spring mvc相关问题
  2. 网页制作基础:各种元素解析
  3. fftw_plan_dft_2d重复优化
  4. AOJ 558 Cheese(bfs)
  5. 本地工程提交github
  6. Hello,移动WEB—px,dp,dpr像素基础
  7. Android事件机制全然解析
  8. 牛了!Python最容易入的10个坑!
  9. mysql 隐式转换 索引_MySQL性能优化:MySQL中的隐式转换造成的索引失效
  10. 实习踩坑之路:集群场景下,我的redis锁为什么不生效啊?别的机器上的线程给解锁了?
  11. python做积分计算器_PyQt5练习:积分计算器
  12. 51单片机红绿灯(十字路口智能控制系统)
  13. 日常中的迅捷PDF转换器
  14. 求101到150之间的质数
  15. 手机网站如何制作,移动网站怎么建设?
  16. dependency
  17. oracle FAQ
  18. 小程序报错:[渲染层网络层错误] Failed to load local image resource /static/logo.png......
  19. ubuntu给手机建wifi
  20. Fiddler抓取微信公众号数据

热门文章

  1. [Linux]网桥设置及链路聚合
  2. Android UsageStatsService 系统数据统计和数据上报
  3. 淘宝直播、淘宝直播技巧,打破店铺流量瓶颈!
  4. HyperWorks在汽车与行人腿部碰撞仿真中的应用
  5. 汤姆猫无法访问html,汤姆猫开始,但HTML不加载
  6. 基于Huffman树的文件压缩(详细)
  7. 2T硬盘只认到1T的一种解决办法
  8. np.diff二维数组中使用append和prepend,
  9. 错误代码:0x80030001的一个好的解决办法
  10. 图片加贴纸怎么添加?快来使用这些实用的添加方法