首页 > 其他 > 详细

4131:Charm Bracelet

时间:2020-03-29 22:55:39      阅读:67      评论:0      收藏:0      [点我收藏+]

 

总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

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 iin 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.

 

输入
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
输出
Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraints
样例输入
4 6
1 4
2 6
3 12
2 7
样例输出
23
来源
USACO 2007 December Silver
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int dp[30000];
 5 int w[30000];
 6 int v[30000];
 7 
 8 int main(){
 9     int n,m;
10     cin>>n>>m;
11     memset(dp,0,sizeof(dp));
12     for(int i=1;i<=n;i++){
13         cin>>w[i]>>v[i];
14     }
15     for(int i=1;i<=n;i++){
16         for(int j=m;j>=w[i];j--){
17             dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
18         }
19     }
20     cout<<dp[m]<<endl;
21     return 0;
22 }

问题分析:

转自https://www.cnblogs.com/caiyishuai/p/8945331.html

N 个物品每个物品有价值v[i],重量w[i], 给定背包最大承重M,求背包能够装载的最大价值。每个物品只有放入背包和不放入背包两种选择。

这是典型的0-1背包问题。

代码的时间上限是O(nm), 对于每个物品i, 它所要遍历的整数区间都是[ci, m]

4131:Charm Bracelet

原文:https://www.cnblogs.com/aiqinger/p/12595395.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!