poj-3624-Charm Bracelet
2014-08-01 15:05
477 查看
01背包问题
Description
Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charms. Each charm i in the supplied list has a weight Wi (1
≤ Wi≤ 400), a 'desirability' factor Di (1 ≤ Di ≤ 100), and can be used at most once. Bessie can only support a charm bracelet whose weight is no more than M (1 ≤ M ≤ 12,880).
Given that weight limit as a constraint and a list of the charms with their weights and desirability rating, deduce the maximum possible sum of ratings.
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 describes charm i with two space-separated integers: Wi and Di
Output
* Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraints
Sample Input
Sample Output
Description
Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charms. Each charm i in the supplied list has a weight Wi (1
≤ Wi≤ 400), a 'desirability' factor Di (1 ≤ Di ≤ 100), and can be used at most once. Bessie can only support a charm bracelet whose weight is no more than M (1 ≤ M ≤ 12,880).
Given that weight limit as a constraint and a list of the charms with their weights and desirability rating, deduce the maximum possible sum of ratings.
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 describes charm i with two space-separated integers: Wi and Di
Output
* Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraints
Sample Input
4 6 1 4 2 6 3 12 2 7
Sample Output
23
#include<iostream> #include<cstring> #define max1(a,b) a>b?a:b using namespace std; int a[12885],b[12885],c[12885]; int main() { int n,m,i,j; while(cin>>n>>m) { for(i=1;i<=n;i++) cin>>b[i]>>c[i]; memset(a,0,sizeof(a)); for(i=1;i<=n;i++) for(j=m;j>=b[i];j--) a[j]=max1(a[j],a[j-b[i]]+c[i]); cout<<a[m]<<endl; } return 0; }
相关文章推荐
- POJ 3628 Bookshelf2 / POJ 3624 Charm Bracelet / POJ 1384 初涉01背包与完全背包
- poj 3624 Charm Bracelet
- poj 3624 Charm Bracelet
- poj 3624 Charm Bracelet
- POJ_3624 Charm Bracelet
- poj 3624 Charm Bracelet
- POJ3624 Charm Bracelet
- POJ 3624 Charm Bracelet 赤裸裸的0-1背包
- POJ 3624 Charm Bracelet 赤裸裸的0-1背包
- poj——3624——Charm Bracelet
- poj3624——charm bracelet
- Charm Bracelet POJ - 3624
- POJ 3624 Charm Bracelet
- POJ 3624 Charm Bracelet
- POJ - 3624 - Charm Bracelet
- poj 3624 Charm Bracelet
- POJ 3624 Charm Bracelet
- POJ - 3624 Charm Bracelet
- POJ 3624 Charm Bracelet
- 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)