常用模板多重背包
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <map>
#include <iostream>
#include <queue>
#include <string>
using namespace std;
int t[6010],w[6010],v[6010],f[6010];
int main()
{
int m,n;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>w[i]>>v[i]>>t[i];
for(int i=1;i<=n;i++)
for(int j=m;j>=w[i];j--)
for(int k=0;k<=t[i];k++) //k从0开始,因为可能一件也不拿
if(j-k*w[i]>=0) //大于等于0,因为可能刚好放满
f[j]=max(f[j],f[j-k*w[i]]+k*v[i]);
cout<<f[m];
return 0;
}