> 文档中心 > P2871 [USACO07DEC]Charm Bracelet S

P2871 [USACO07DEC]Charm Bracelet S


❤作者:那些年丶我们逃过的课

❤博客主页:那些年丶我们逃过的课的博客_CSDN博客-c++题目,c++学习记录,c++小游戏领域博主

❤码云gitee:我的码云 - Gitee.com

❤期待你的关注,如果觉得还可以的话,可以点赞评论支持一下,每个评论我都会回访的🎉

题目描述

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.

有 N 件物品和一个容量为 M的背包。第 i 件物品的重量 W i W_i Wi,价值是 D i D_i Di。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。

输入格式

* 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

第一行:物品个数 N 和背包大小 M。

第二行至第 N+1行:第 i个物品的重量 W i W_i Wi 和价值 D i D_i Di

输出格式

* Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraints

输出一行最大价值。

输入输出样例

输入 #1

4 61 42 63 122 7

输出 #1

23

DP代码

这道题有点坑啊,英文里的数据范围没有翻译过来,害的我RE了半天
#includeusing namespace std;int main(){int a,b;//a为背包载重,b为物品个数int w[100005],v[100005];int f[1005]={0};cin>>b>>a;for(int i=1;i>w[i]>>v[i];for(int i=1;i=w[i];j--)//背包重量遍历{f[j]=max(f[j],f[j-w[i]]+v[i]); }}cout<<f[a];return 0;}

原理详细讲解请看:DP动态规划入门学习记录(三)——01背包_那些年丶我们逃过的课的博客-CSDN博客

2022.5.6
13:49

好看的书法字体下载