题目:庆功会
思路:模板+滚动数组…
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxm 6000
#define maxn 500
int m,n;
int w[maxn+5],c[maxn+5],num[maxn+5];
int f[maxm+5]= {0};
int main() {
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++) {
scanf("%d%d%d",&w[i],&c[i],&num[i]);
for(int j=m; j>=0; j--) {
for(int k=1; j-k*w[i]>=0&&k<=num[i]; k++) {
f[j]=max(f[j],f[j-k*w[i]]+k*c[i]);
}
}
}
printf("%d\n",f[m]);
return 0;
}