
#include<bits/stdc++.h>
#define int long long
using namespace std;
void read(int &x){
x = 0;
bool f = 0;
char ch = getchar();
while(ch > '9' || ch < '0') {
if(ch == '-') {
f = 1;
}
ch = getchar();
}
do {
x = (x << 3) + (x << 1) + ch - '0';
ch = getchar();
} while (ch >= '0' && ch <= '9');
x = f?-x:x;
}
int n, m, v, w, u, dp[40005];
signed main(){
read(n);
read(m);
for(int i = 1; i <= n; i++) {
read(v);
read(w);
read(u);
for(int k = m; k >= w; k--) {
for(int j = 1; j <= u && j * w <= k; j++) {
dp[k] = max(dp[k], dp[k - w * j] + v * j);
}
}
}
cout << dp[m];
return 0;
}
是的,不优化的背包 dp 加快读 A了