http://acm.hdu.edu.cn/showproblem.php?pid=2546
 
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

如果 m 小于5的话,直接输出m;

否则的话,先对菜的价值排序,求出在前n-1种菜中能得到m-5的最大价值, 再减去价值最大的菜的价值
#include <iostream>
#include <queue>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <stack>
#include <vector>
#include <algorithm>using namespace std;#define N 2100
#define met(a,b) (memset(a,b,sizeof(a)))int a[N];
int dp[N];int main()
{int n;while(scanf("%d", &n), n){int i, j, m, ans;met(a, 0);met(dp, 0);for(i=0; i<n; i++)scanf("%d", &a[i]);scanf("%d", &m);sort(a, a+n);for(i=0; i<n-1; i++)for(j=m-5; j>=a[i]; j--)dp[j] = max(dp[j], dp[j-a[i]]+a[i]);if(m>=5) ans = m-(dp[m-5]+a[n-1]);else     ans = m;printf("%d\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/YY56/p/5537274.html

(01背包 排序+特判)饭卡(hdu 2546)相关推荐

  1. hduoj 饭卡 java_饭卡 HDU - 2546

    饭卡 HDU - 2546 原题链接 考察:01背包 这道题懵逼半天,看了大佬的代码终于懂了点 思路: 这道题是和购买顺序有关的,我们先拿出最贵的菜,同时余额拿出5元,在剩余的余额尽可能买总和贵的菜. ...

  2. 饭卡 HDU - 2546

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

  3. 【基础算法训练】—— 01背包 + 排序

    目录 前言 第一题 977. 有序数组的平方

  4. 暑假N天乐 —— 01背包及变形

    暑假集训的第一天 第二天了. 决定还是先把基础巩固一下好了,万一后面训练赛出事故更尴尬. 所以今天的主题是 -- 01背包及变形 动态规划概念 动态规划(Dynamic programming,DP) ...

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

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

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

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

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

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

  8. HDU 2546 饭卡 01背包变形

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

  9. hdu 2546 饭卡(01背包)

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

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

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

最新文章

  1. from server sql 拼接统计两个子查询_4复杂查询-SQL
  2. Ubuntu中安装配置和卸载FTP(转)
  3. python数学公式代码导入_NumPy 数学函数及代数运算的实现代码
  4. MySQL复习资料(二)——MySQL-DDL语句
  5. 精简 opencv python_基于Python的OpenCV人脸检测!简直不要太简单!
  6. KPN iTV的敏捷转型之旅
  7. java set 接口_java笔记四:Set接口
  8. python 正则表达 10分钟入门
  9. C语言编程齿轮轮廓线坐标,C语言程序实现齿轮基本参数几何尺寸计算
  10. matlab软件进行仿真验证,matlab仿真软件
  11. C/C++,pascal函数调用约定
  12. 奔跑吧,旅行商 - 当机器学习遇上组合优化
  13. 【个人硬件开源分享】基于ESP32的能量机关主控受控模块,伏虎单手摇杆重力感应加摇杆加LCD屏幕分为左手和右手,基于PD5048A的I2C总线扩展级联器
  14. 桌面的计算机图标误删了怎么恢复,删除桌面图标-如何恢复桌面图标不小心将某个程序的桌面图标给删了,怎么恢复呢 爱问知识人...
  15. 接了个私单,结果对方有部分尾款迟迟不付,还好有留了个后门
  16. 个人身份认证接口介绍
  17. oracle ipac,Oracle VM VritualBOX安装Centos详解与注意事项
  18. 程序员笑话全集,可悲的程序员
  19. jni-Demo-基于linux(c++ java)
  20. Java:1018: 奇数偶数

热门文章

  1. python版本时间_python 获取文件版本号和修改时间
  2. 计算机设备操作与讲解,第五章计算机操作系统设备管理讲解.ppt
  3. php curl exec ch,PHP curl_exec函数
  4. SQLserver添加主键
  5. Springboot读取application.properties文件乱码
  6. [渝粤教育] 重庆电子工程职业学院 信息技术与人工智能基础 参考 资料
  7. 【渝粤教育】国家开放大学2018年秋季 2115T人体解剖学与组织胚胎学 参考试题
  8. 【Python实例第2讲】特征提取集成方法
  9. ACM 学习笔记(三) 数学入门
  10. 键盘各键对应的ASCII码值(包括鼠标和键盘所有的键)