饭卡

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

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
注意读题
小于5是什么都买不了,大于5时,先买一个最贵的,若
直接小于0,直接输出
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define PI 3.141592653589793238462
#define INF 1000000000
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
ll dp[1100],a[1006];
ll n,v;
int main()
{while(scanf("%d",&n) && n){mem(dp);for(int i=0;i<n;i++){scanf("%d",&a[i]);}scanf("%d",&v);if(v<5){printf("%d\n",v);continue;}sort(a,a+n);int m=v-5;//买最贵的if(m<0){printf("%d\n",m);continue;}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",v-dp[m]-a[n-1]);}return 0;
}

转载于:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7192920.html

HDU 2564 饭卡相关推荐

  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 饭卡

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

  9. hdu 2546 饭卡【01背包】

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

最新文章

  1. 插入始终是1_40分!1分钟4次!大JB太硬了!
  2. ListView 空值时的友好提示
  3. struts标签传值
  4. 029_Loading加载
  5. 趣学python3(26)-pygame-蛇身运动
  6. C#创建WinForm应用程序的入口点
  7. windows 通过批处理 修改环境变量
  8. 油田 (Oil Deposits UVA - 572)
  9. Codeforces Round #480 (Div. 2) B. Marlin
  10. python新手入门到放弃_python萌新:从零基础入门到放弃
  11. 怎么编程安装字体文件
  12. 如何使用Keras功能API进行深度学习
  13. 软工第一次个人作业博客(一)
  14. 国科大李保滨矩阵分析与应用2021回忆版
  15. 手把手教学,详细的外挂制作教程视频
  16. 解决关于腾讯会议黑屏问题(ThinkpadE420型号)
  17. Unity基础篇:Serializable总结与深入研究。
  18. Cesium之地图清晰度解决方案
  19. 基于 React hooks + Typescript + Cesium 实现模型剖切分析
  20. 嵌入式从业者应知应会知识点 - 索引

热门文章

  1. 使用chardet判断编码方式
  2. 【转】秒杀系统架构分析与实战
  3. [LeetCode]Convert Sorted Array to Binary Search Tree
  4. thinkphp的控制器包含在Url中时注意区分大小写
  5. PHP通过Thrift操作Hbase
  6. shell数值比较和字符串比较
  7. python字典中找最小值_从包含元组值的字典中查找最小值和最大值
  8. linux c 设置utc时间,C/C++标准库之转换UTC时间到local本地时间详解
  9. 简述WinCE开发特性及忠告
  10. Flask的上下文管理机制