POJ - 3624 《Charm Bracelet》 【0-1背包】
2013-07-20 12:34
344 查看
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
【实现代码】
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<cstdio> #include<cstring> int W[3404]; int D[3404]; int dp[12881]; int max(int a,int b){return a>b?a:b;} int main() { /* char STD[102400]=""; if(freopen("in.txt","r",stdin)==NULL)freopen("CON","r",stdin); else { fread(STD,1,1024,stdin); printf("===input===\n%s\n===output===\n",STD); freopen("in.txt","r",stdin); } */ int N,M; scanf("%d%d",&N,&M); for(int i=0;i<N;i++)scanf("%d%d",&W[i],&D[i]); memset(dp,0,sizeof(dp)); for(int i=0;i<N;i++) for(int j=M;j>=W[i];j--) dp[j]=max(dp[j],dp[j-W[i]]+D[i]); printf("%d",dp[M]); }
相关文章推荐
- POJ 3624 Charm Bracelet 0-1背包
- POJ-3624 Charm Bracelet (01背包 入门题)
- POJ 3624 Charm Bracelet (01背包 + 空间优化)
- poj 3624 Charm Bracelet 背包DP
- poj 3624 Charm Bracelet 基础01背包
- poj 3624 Charm Bracelet(0-1背包~DP~)
- poj 3624 Charm Bracelet(0-1背包 DP)
- POJ 3624 Charm Bracelet(01背包裸题)
- poj3624-Charm Bracelet(01背包模板题)
- POJ 3624 charm bracelet 01背包
- POJ 3624 Charm Bracelet(背包)
- poj 3624 Charm Bracelet(01背包入门题)
- poj 3624 Charm Bracelet (0/1背包)
- POJ 3624 Charm Bracelet【裸01背包和关于贪心解 01 背包问题的思考】
- POJ 3624- Charm Bracelet(01背包 滚动数组)
- POJ 3624 A - Charm Bracelet(dp)(背包)
- POJ 3624 Charm Bracelet(01背包裸题)
- POJ 3624 Charm Bracelet(0-1背包模板)
- POJ 3624 Charm Bracelet 0/1背包基础
- POJ 3624 Charm Bracelet (01背包 + 内存优化)