HDU-3449 Consumer(依赖背包)
2016-07-08 13:36
323 查看
原题链接
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others)
Total Submission(s): 1983 Accepted Submission(s): 1063
Problem Description
FJ is going to do some shopping, and before that, he needs some boxes to carry the different kinds of stuff he is going to buy. Each box is assigned to carry some specific kinds of stuff (that is to say, if he is going to buy one
of these stuff, he has to buy the box beforehand). Each kind of stuff has its own value. Now FJ only has an amount of W dollars for shopping, he intends to get the highest value with the money.
Input
The first line will contain two integers, n (the number of boxes 1 <= n <= 50), w (the amount of money FJ has, 1 <= w <= 100000) Then n lines follow. Each line contains the following number pi (the price of the ith box 1<=pi<=1000),
mi (1<=mi<=10 the number goods ith box can carry), and mi pairs of numbers, the price cj (1<=cj<=100), the value vj(1<=vj<=1000000)
Output
For each test case, output the maximum value FJ can get
Sample Input
3 800
300 2 30 50 25 80
600 1 50 130
400 3 40 70 30 40 35 60
Sample Output
210
Consumer
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others)Total Submission(s): 1983 Accepted Submission(s): 1063
Problem Description
FJ is going to do some shopping, and before that, he needs some boxes to carry the different kinds of stuff he is going to buy. Each box is assigned to carry some specific kinds of stuff (that is to say, if he is going to buy one
of these stuff, he has to buy the box beforehand). Each kind of stuff has its own value. Now FJ only has an amount of W dollars for shopping, he intends to get the highest value with the money.
Input
The first line will contain two integers, n (the number of boxes 1 <= n <= 50), w (the amount of money FJ has, 1 <= w <= 100000) Then n lines follow. Each line contains the following number pi (the price of the ith box 1<=pi<=1000),
mi (1<=mi<=10 the number goods ith box can carry), and mi pairs of numbers, the price cj (1<=cj<=100), the value vj(1<=vj<=1000000)
Output
For each test case, output the maximum value FJ can get
Sample Input
3 800
300 2 30 50 25 80
600 1 50 130
400 3 40 70 30 40 35 60
Sample Output
210
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <vector> #define maxn 100005 using namespace std; typedef long long ll; int dp[maxn], k[maxn]; int main(){ // freopen("in.txt", "r", stdin); int n, w; while(scanf("%d%d", &n, &w) == 2){ memset(dp, 0, sizeof(dp)); int p, m, a, b; for(int i = 0; i < n; i++){ scanf("%d%d", &p, &m); for(int j = p; j <=w; j++) k[j] = dp[j-p]; while(m--){ scanf("%d%d", &a, &b); for(int j = w; j >= p+a; j--) k[j] = max(k[j], k[j-a]+b); } for(int j = p; j <= w; j++) dp[j] = max(k[j], dp[j]); } printf("%d\n", dp[w]); } return 0; }
相关文章推荐
- 转载:Android Camera 3D效果
- [mt6735]10.1寸 LCD 驱动添加
- How to export a template in Visual Studio?
- jQuery选择器总结
- Android View动效地址
- 开源数据库中间件MYCAT产品介绍与企业实战
- Android标准架构实例分析之编写最简单的hello驱动
- BlockingQueue
- POJ 1742 Coins
- 小技巧,logo使用<img>嵌入
- 《精通MVC5.0》路由笔记
- centos7 dokcer fastdfs
- 模拟实现String类----传统写法
- JDK导入证书
- Android 绘制太极图
- SQL自定义函数split分隔字符串
- iOS开发(OC)——根据url播放音频
- 实战Apache+Tomcat集群和负载均衡
- VS2013调用armadillo使用KNN算法实现0-9数字分类
- HTML5使用Div标签来实现表格