hdu2546饭卡
2016-05-21 16:53
183 查看
中文题目,题意就不说了,都能看懂。
转换一下就是一个背包问题。先把最大值去掉,用剩余的钱来买东西。可以把剩余的钱看作背包的体积,每一样饭菜看作每一个物品的体积,求背包里最多可以装多少东西就可以了。最后用背包剩余的体积减去最大值就行了。
代码如下:
转换一下就是一个背包问题。先把最大值去掉,用剩余的钱来买东西。可以把剩余的钱看作背包的体积,每一样饭菜看作每一个物品的体积,求背包里最多可以装多少东西就可以了。最后用背包剩余的体积减去最大值就行了。
代码如下:
#include<stdio.h> #include<stdlib.h> #include<string.h> int cmp(const void *a,const void *b) { return *(int *)b-*(int *)a; } int max(int a,int b) { return a>b?a:b; } int main() { int n,m,i,j; int a[1100],dp[1100]; while(scanf("%d",&n),n!=0) { memset(dp,0,sizeof(dp)); for(i=0; i<n; i++) scanf("%d",&a[i]); scanf("%d",&m); if(m<5) { printf("%d\n",m); continue; } m=m-5; qsort(a,n,sizeof(a[0]),cmp); for(i=1; i<n; i++) for(j=m; j>=a[i]; j--) dp[j]=max(dp[j],dp[j-a[i]]+a[i]); printf("%d\n",m+5-dp[m]-a[0]); } return 0; }
相关文章推荐
- (39.1) Spring Boot Shiro权限管理【从零开始学Spring Boot】
- 总结---我在IOS开发中常用的回调手段
- C#操作本地文件及保存文件到数据库的基本方法总结
- poj 2942 双连通分量+二分图的染色判断
- 快速排序8
- java cache过期策略两种实现,一个基于list轮询一个基于timer定时
- HTML转义为实体,实体转回为HTML,特殊字符转换
- GridView监听器
- bzoj1529 [POI2005]ska Piggy banks
- TCP/IP入门(4) --应用层
- LeetCode Linked List Cycle II
- DH算法证明及相应的理论知识
- C# winform windows服务安装与卸载
- [从头学python] 第07节 numpy的盘点
- TCP/IP入门(3) --传输层
- 高可用,和负载均衡的简单理解
- TCP/IP入门(2) --网络层
- 机器学习入门学习资源
- 蓝桥杯 算法提高 日期计算
- 使用Handler下载数据