program rom;
var
f:array[0..1000,0..1000]of longint;
m,w,s:array[1..1000]of longint;
n,i,max,j,k,v:longint;
begin
readln(n,v);
for i:=1 to n do
readln(m[i],w[i],s[i]);
for i:=1 to n do
for j:=1 to v do
begin
max:=0;
for k:=0 to m[i] do
if (j>=w[i]*k)and(f[i-1,j-w[i]*k]+s[i]*k>max) then max:=f[i-1,j-w[i]*k]+s[i]*k;
f[i,j]:=max
end;
write(f[n,v])
end.
program dp;
var
m,w,s:array[1..2000] of integer;
f:array[0..500] of longint;
n,maxv,i,maxn:longint;
function min(p,q:longint):longint;
begin
if p<q then exit(p) else exit(q);
end;
function max(p,q:longint):longint;
begin
if p>q then exit(p) else exit(q);
end;
procedure dynamic;
var
i,j,k,p,q:longint;
begin
for i:=1 to n do
begin
p:=maxv div w[i];
q:=min(p,m[i]);
for j:=1 to q do
for k:=maxv-w[i] downto 0 do f[k+w[i]]:=max(f[k+w[i]],f[k]+s[i]);
end;
for i:=1 to maxv do maxn:=max(maxn,f[i]);
write(maxn);
end;
begin
read(n,maxv);
for i:=1 to n do read(m[i],w[i],s[i]);
dynamic;
end.
题目:逃亡的准备
状态: Accepted
测评机: Xeost[5]
得分: 100分
提交日期: 2010-10-29 20:45:00
有效耗时: 1985毫秒
测试结果1: 通过本测试点|有效耗时219ms
测试结果2: 通过本测试点|有效耗时172ms
测试结果3: 通过本测试点|有效耗时172ms
测试结果4: 通过本测试点|有效耗时172ms
测试结果5: 通过本测试点|有效耗时156ms
测试结果6: 通过本测试点|有效耗时156ms
测试结果7: 通过本测试点|有效耗时219ms
测试结果8: 通过本测试点|有效耗时219ms
测试结果9: 通过本测试点|有效耗时250ms
测试结果10: 通过本测试点|有效耗时250ms