标签:
转化为01背包
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; struct Rice { int v,w,c; }; Rice r[120]; int dp[50000]; int main() { int t,n,m; int p,h,c; int i,j,k; scanf("%d",&t); while(t--) { scanf("%d%d",&m,&n); for(i=0;i<n;i++) { scanf("%d%d%d",&p,&h,&c); r[i].w=p; r[i].v=h; r[i].c=c; } memset(dp,-1,sizeof(dp)); dp[0]=0; int ans=0; for(i=0;i<n;i++) { for(j=0;j<r[i].c;j++) { for(k=m;k>=r[i].w;k--) { if(dp[k-r[i].w]>=0) { dp[k]=max(dp[k],dp[k-r[i].w]+r[i].v); ans=max(dp[k],ans); } } } } printf("%d\n",ans); } return 0; }
hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (dp 多重背包)
标签:
原文地址:http://www.cnblogs.com/sola1994/p/4685656.html