饭卡

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

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
思路:简单题目,基础的01背包问题,不过一开始没看出来(=-=,还是懂得太少啊),先拿五块钱出来买最贵的东西,那么接下来就是在剩下的m-5块钱中买尽量多的东西,也就是在m-5容量的背包中装价值尽量高的东西,于是可以转换为价值和代价均是a[i]的物品的01背包问题。
AC代码如下:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;const int maxn=1000+5;int a[maxn];
int dp[maxn];int main(){int n,m;while(scanf("%d",&n)==1 && n){memset(dp,0,sizeof(dp));for(int i=0;i<n;i++) scanf("%d",&a[i]);scanf("%d",&m);if(m<5){printf("%d\n",m);continue;}sort(a,a+n);int maxx=a[n-1];for(int i=0;i<n-1;i++){for(int j=m-5;j>=a[i];j--){dp[j]=max(dp[j],dp[j-a[i]]+a[i]);}}printf("%d\n",m-maxx-dp[m-5]);}return 0;
}

Hdu 2546 饭卡相关推荐

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

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

  2. HDU 2546 饭卡 01背包变形

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

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

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

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

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

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

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

  6. HDU——2546 饭卡

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

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

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

  8. hdu 2546 饭卡【01背包】

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

  9. hdu 2546 饭卡(01背包)

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

最新文章

  1. Linux文件系统和挂载点理解
  2. 【iOS XMPP】使用XMPPFramewok(一):添加XMPPFramework(XCode 4.6.2)
  3. 《ext江湖》第8章继承-代码片段
  4. 职称计算机考试 数量,职称计算机考试WPS基础考点:自动求和
  5. jsp中%@ % 与% % 与%! %
  6. jQuery 2.0.3 - 整体架构
  7. redis的bitmap操作
  8. ASP.Net学习笔记003--网站和WebApplication的区别
  9. 实参可以是任意类型吗_传递任意数量的实参
  10. nginx动态php转发,Nginx 动态 upstreams 实现,nginxupstreams_PHP教程
  11. git add commit checkout 工作区 暂存区 远程仓库 区别
  12. 20sccm_SCCM 2016 使用PXE 部署操作系统(一)
  13. 高仿绚丽彩虹悬浮音乐播放器html5源码
  14. java零钱换整程序_Leetcode 322. 零钱兑换
  15. 计算机网络之——非常恶心但友善ip地址、子网掩码、网络地址、构造超网、最小地址和最大地址(理解篇)
  16. 常用小波基函数以及多尺度多分辨率的理解
  17. 密码学归约证明——选择明文攻击下的不可区分性
  18. 【教程】Python科研数据可视化、MATLAB科研数据可视化
  19. 在RHEL4的GNOME环境下编译安装eva0.4.1
  20. Matlab 用途(我的理解)

热门文章

  1. 思科为合作伙伴创造新机遇
  2. 新闻发布系统-项目总结
  3. C/C++的编译和链接过程
  4. QTL-seq 鹰嘴豆
  5. 一篇简明的wifi通信协议介绍
  6. 安卓8.0+图标适配
  7. 浮动QQ在线客服amp;网站QQ在线咨询
  8. 控价公司可以帮我们做什么?什么时候需要找第三方控价公司?
  9. c++ unordered_map在多线程下只插入会崩溃
  10. java 死锁 活锁_Java之死锁/活锁