HDU2546 饭卡(01背包)
来源:互联网 发布:淘宝三哥手机店可靠吗 编辑:程序博客网 时间:2024/04/20 21:41
题意:中文题。
思路:01背包,求能购买的价值最后减去。由于大于等于5时才可购买,所以价钱大的最后买,也就是先更新大的,再更新小的。所以要从大到小排序。
#include <algorithm>#include <iostream>#include <sstream>#include <cstring>#include <cstdio>#include <vector>#include <string>#include <queue>#include <stack>#include <cmath>#include <set>#include <map>using namespace std;typedef long long LL;#define mem(a, n) memset(a, n, sizeof(a))#define ALL(v) v.begin(), v.end()#define si(a) scanf("%d", &a)#define sii(a, b) scanf("%d%d", &a, &b)#define siii(a, b, c) scanf("%d%d%d", &a, &b, &c)#define pb push_back#define eps 1e-8const int inf = 0x3f3f3f3f, N = 1e3 + 5, MOD = 1e9 + 7;int T, cas = 0;int n, m;int a[N], dp[N];int main(){#ifdef LOCAL freopen("/Users/apple/input.txt", "r", stdin);//freopen("/Users/apple/out.txt", "w", stdout);#endif while(si(n), n) { mem(dp, 0); for(int i = 0; i < n; i ++) si(a[i]); si(m); sort(a, a + n); for(int i = n - 1; i >= 0; i --) { for(int j = m; j >= 5; j --) { if(j - a[i] >= 0) dp[j] = max(dp[j], dp[j-a[i]] + a[i]); else dp[j] = max(dp[j], a[i]); } } printf("%d\n", m - dp[m]); } return 0;}
0 0
- HDU2546:饭卡(01背包)
- hdu2546 饭卡 (01背包)
- hdu2546饭卡-01背包
- hdu2546饭卡 (01背包)
- HDU2546:饭卡(01背包)
- HDU2546 饭卡 01背包
- HDU2546 饭卡(01背包)
- 【HDU2546】饭卡(01背包)
- 【01背包】HDU2546饭卡
- hdu2546饭卡(01背包)
- hdu2546 饭卡(01背包)
- Hdu2546-饭卡-【01背包】
- 01背包 hdu2546饭卡
- hdu2546 饭卡(01背包)
- hdu2546 饭卡 01-背包问题
- hdu2546饭卡(01背包)
- hdu2546 饭卡 (01背包)
- hdu2546饭卡(01背包)
- Docker实战(八):Docker安装ElasticSearch环境
- 上传或提交等待过程图标loading.gif的实现
- 数据结构学期期末总结
- 遗传算法-入门(Java demo)
- 提取字符串中的数字-指针版本-(C语言描述)
- HDU2546 饭卡(01背包)
- Spring Cloud Config
- Ip子网掩码划分
- 安装CentOS后网络连接默认是关闭的,无法联网
- 百度地图API 项目开发的准备工作及基础知识
- 从一个动漫设计师的梦想到android软件开发工程师的转变
- linux iptabls 命令
- 【C++]】蓝桥杯练习题 (入门训练 Fibonacci数列)
- 喝酒不骑马的Android自学日记(9)-Spinner的实例