I love sneakers!(分组背包HDU3033)
来源:互联网 发布:淘宝网民族风女装春装 编辑:程序博客网 时间:2024/06/06 20:39
I love sneakers!
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4602 Accepted Submission(s): 1893
Problem Description
After months of hard working, Iserlohn finally wins awesome amount of scholarship. As a great zealot of sneakers, he decides to spend all his money on them in a sneaker store.
There are several brands of sneakers that Iserlohn wants to collect, such as Air Jordan and Nike Pro. And each brand has released various products. For the reason that Iserlohn is definitely a sneaker-mania, he desires to buy at least one product for each brand.
Although the fixed price of each product has been labeled, Iserlohn sets values for each of them based on his own tendency. With handsome but limited money, he wants to maximize the total value of the shoes he is going to buy. Obviously, as a collector, he won’t buy the same product twice.
Now, Iserlohn needs you to help him find the best solution of his problem, which means to maximize the total value of the products he can buy.
There are several brands of sneakers that Iserlohn wants to collect, such as Air Jordan and Nike Pro. And each brand has released various products. For the reason that Iserlohn is definitely a sneaker-mania, he desires to buy at least one product for each brand.
Although the fixed price of each product has been labeled, Iserlohn sets values for each of them based on his own tendency. With handsome but limited money, he wants to maximize the total value of the shoes he is going to buy. Obviously, as a collector, he won’t buy the same product twice.
Now, Iserlohn needs you to help him find the best solution of his problem, which means to maximize the total value of the products he can buy.
Input
Input contains multiple test cases. Each test case begins with three integers 1<=N<=100 representing the total number of products, 1 <= M<= 10000 the money Iserlohn gets, and 1<=K<=10 representing the sneaker brands. The following N lines each represents a product with three positive integers 1<=a<=k, b and c, 0<=b,c<100000, meaning the brand’s number it belongs, the labeled price, and the value of this product. Process to End Of File.
Output
For each test case, print an integer which is the maximum total value of the sneakers that Iserlohn purchases. Print "Impossible" if Iserlohn's demands can’t be satisfied.
Sample Input
5 10000 31 4 62 5 73 4 991 55 772 44 66
Sample Output
255
Source
2009 Multi-University Training Contest 13 - Host by HIT
分组背包+01背包,要求每组物品最少取一个
分组背包+01背包,要求每组物品最少取一个
#include <set>#include <map>#include <list>#include <stack>#include <cmath>#include <vector>#include <queue>#include <string>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long LL;const int INF = 0x3f3f3f3f;typedef struct node{ int Fee; int val;} SN;SN a;int n,m,K;int Dp[12][11000];vector<SN>s[12];int main(){ int flag,fe,va; while(~scanf("%d %d %d",&n,&m,&K)) { memset(Dp,-1,sizeof(Dp)); memset(Dp[0],0,sizeof(Dp[0])); for(int i=0; i<=K; i++) { s[i].clear(); } for(int i=1; i<=n; i++) { scanf("%d %d %d",&flag,&fe,&va); a.Fee=fe; a.val=va; s[flag].push_back(a); } for(int i=1; i<=K; i++) { for(int j=0;j<s[i].size();j++) { for(int k=m;k>=s[i][j].Fee;k--) { if(Dp[i][k-s[i][j].Fee]!=-1)//顺序不可颠掉 { Dp[i][k]=max(Dp[i][k],Dp[i][k-s[i][j].Fee]+s[i][j].val); } if(Dp[i-1][k-s[i][j].Fee]!=-1) { Dp[i][k]=max(Dp[i][k],Dp[i-1][k-s[i][j].Fee]+s[i][j].val); } } } } if(Dp[K][m]==-1) { printf("Impossible\n"); } else { printf("%d\n",Dp[K][m]); } } return 0; /* 4 5 2 1 2 3 1 3 2 2 2 3 2 3 2 3 5 3 1 2 5 2 2 1 3 2 2 3 5 3 1 0 5 2 0 1 3 0 2 */}
0 0
- (分组背包)I love sneakers!(hdu3033)
- 分组背包 hdu3033 I love sneakers!
- I love sneakers!(分组背包HDU3033)
- HDU3033 I love sneakers!(分组背包)
- hdu3033 I love sneakers! (分组背包)
- 【分组背包变形】HDU3033-I love sneakers!
- HDU3033 I love sneakers!(分组背包)
- hdu3033---I love sneakers!(分组背包变形)
- hdu3033 I love sneakers!
- 【HDU3033】【I love sneakers!】
- I love sneakers! (分组背包)
- 动态规划--至少取一个的分组背包--hdu3033 I love sneakers!
- I love sneakers! 分组背包DP
- hdu 3033 I love sneakers! 分组背包
- HDU 3033 I love sneakers! (分组背包)
- hdu 3033 I love sneakers!(分组背包)
- hdu 3033 I love sneakers! (分组背包)
- HDU 3033 I love sneakers! / 分组背包
- cookie 和session 的区别
- Linux系统内存管理及相关操作函数
- 创业团队新产品开发模式----寻找一个可持续升级、重复、盈利的模式
- HDU 5400(Arithmetic Sequence-暴力找区间)
- hdu5273(区间DP)
- I love sneakers!(分组背包HDU3033)
- 一些文章收藏
- pomodoro源代码
- 利用POI在Excel文档任意单元格写入数据
- codecombat之边远地区的森林12-22关及地牢39关代码分享
- HDU 5402(Travelling Salesman Problem-构造矩阵对角最长不相交路径)
- 简述C和C++程序员学习历程
- poj 3678 Katu Puzzle (2-sat)
- office 2010图标出现异常时的解决办法