在《Harry Potter and the Deathly Hallows》中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小有限,所以我们只能够在里面放入非常 重要的物品,现在给出该种物品的数量、体积、价值的数值,希望你能够算出能使背包的价值最大的组合方式,并且输出这个数值,赫敏会非常地感谢你。
第一行有2个整数,物品种数n和背包装载体积v。 第2行到i+1行每行3个整数,为第i种物品的数量m、体积w、价值s。
包含一个整数,即为能拿到的最大的物品价值总和。
2 10
3 4 3
2 2 5
13
选第一种一个,第二种两个。结果为31+52=13 【数据规模】 对于30%的数据 1<=v<=500,1<=n<=2000,1<=m<=10,1<=w<=20,1<=s<=100 对于100%的数据 1<=v<=500,1<=n<=2000,1<=m<=5000,1<=w<=20,1<=s<=100
#include<bits/stdc++.h>
using namespace std;
int v[2601],w[2010],s[2001],dp[2001][501];
int n,m;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>s[i]>>v[i]>>w[i];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int k=0;k<=s[i];k++)
{
if(j>=k*v[i])
dp[i][j]=max(dp[i][j],dp[i-1][j-k*v[i]]+k*w[i]);
}
cout<<dp[n][m];
return 0;
}