题解
【入门】奖品采购
1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int n,m,w1,v1,v[512000],g,w[2512345],dp[6123],p; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ cin>>w1>>v1>>g; int t=1; while(1){ if(g>t){ w[++p]=w1*t; v[p]=v1*t; g-=t; t*=2; }else{ w[++p]=g*w1; v[p]=g*v1; break; } } } for(int i=1;i<=p;i++){ for(int j=m;j>=w[i];j--){ dp[j]=max(dp[j],dp[j-w[i]]+v[i]); } } cout<<dp[m]; return 0; }
- 1