HDU2191 - 悼念512汶川~ - 多重背包模板题
思路
中文模板题,不解释了。
AC代码
//多重背包
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int dp[110],p[110],w[110],daishu[110];
int main()
{
int n,m,i,j,k,t;
while(~scanf("%d",&t))
{
while(t--)
{
memset(dp,0,sizeof(dp));
scanf("%d %d",&m,&n);
for(i=0; i<n; i++)
{
scanf("%d %d %d",&p[i],&w[i],&daishu[i]);
}
for(i=0; i<n; i++) //大米种类
{
for(j=0; j<daishu[i]; j++)//每种大米的袋数
{
for(k=m; k>=p[i]; k--)//从总金额开始
dp[k]=max(dp[k],dp[k-p[i]]+w[i]);
}
}
printf("%d\n",dp[m]);
}
return 0;
}
}