HDU 2191 (多重背包)

;int c[105],v[105],b[105];int dp[105];int main(){int n,m,t;cin>>t;while(t–){cin>>n>>m;for(int i=1;i<=m;i++)cin>>c[i]>>v[i]>>b[i];memset(dp,0,sizeof(dp));for(int i=1 ;i<=m;i++)for(int j=1;j<=b[i];j++)for(int k=n;k>=c[i];k–)dp[k]=max(dp[k],dp[k-c[i]]+v[i]);cout<<dp[n]<<endl;}return 0;};int main(){int nCase,Limit,nKind,i,j,k, v[111],w[111],c[111],dp[111];count,Value[1111],size[1111];>>nCase;while(nCase–){count=0;cin>>Limit>>nKind;for(i=0; i<nKind; i++){cin>>w[i]>>v[i]>>c[i];for(j=1; j<=c[i]; j<<=1){Value[count]=j*v[i];size[count++]=j*w[i];c[i]-=j;}if(c[i]>0){Value[count]=c[i]*v[i];size[count++]=c[i]*w[i];}}memset(dp,0,sizeof(dp));for(i=0; i<count; i++)for(j=Limit; j>=size[i]; j–)if(dp[j]<dp[j-size[i]]+Value[i])dp[j]=dp[j-size[i]]+Value[i];cout<<dp[Limit]<<endl;}return 0;}

,每一发奋美文努力的背后,必有加倍的赏赐。

HDU 2191 (多重背包)

相关文章:

你感兴趣的文章:

标签云: