f:array[0..10000]of longint;
n,v,i,j,k,m,w,s:longint;
begin
readln(n,v);
for i:=1 to n do begin
readln(m,w,s);
if w<=v then begin
if w*m>v then m:=v div w;{这句可以当作剪枝……第一次竟然写成‘m:=v div m’,我的正确率啊……}
for j:=1 to m do
for k:=v downto w do
if f[k]<f[k-w]+s then f[k]:=f[k-w]+s;
end;
end;
write(f[v]);
end.
n,v,i,j,k:integer;
m,w,s:array[1..2000] of integer;
f:array[0..500,0..2000] of longint;
begin
readln(n,v);
for i:=1 to n do
begin
readln(m[i],w[i],s[i]);
if v div w[i] < m[i] then m[i]:=v div w[i];
end;
for j:=1 to n do
for i:=1 to v do
begin
f[i,j]:=f[i,j-1];
for k:=1 to m[j] do
if i<k*w[j] then break
else if i>=k*w[j] then
if f[i-k*w[j],j-1]+s[j]*k>f[i,j] then f[i,j]:=f[i-k*w[j],j-1]+s[j]*k;
end;
writeln(f[v,n]);
end.
--------------------------------------------------
有效耗时: 该状态没有记录
测试结果1: 测试结果正确
测试结果2: 测试结果正确
测试结果3: 测试结果正确
测试结果4: 测试结果正确
测试结果5: 测试结果正确
测试结果6: 测试结果正确
测试结果7: 测试结果正确
测试结果8: 测试结果正确
测试结果9: 测试结果正确
测试结果10: 测试结果正确