qdzcslj 2010-04-14 20:00:00
点我顶贴
收藏
删除
type data=record
m:longint;
w:longint;
s:longint;
end;
var f:array[0..2000,0..500] of longint;
a:array[1..2000] of data;
k,v,n,i,j:longint;
begin
readln(n,v);
for i:=1 to n do
readln(a[i].m,a[i].w,a[i].s);
fillchar(f,sizeof(f),0);
for i:=1 to n do
for j:=1 to v do begin
f[i,j]:=f[i-1,j];
for k:=1 to a[i].m do
if (j-a[i].w*k>=0) then
if f[i-1,j-a[i].w*k]+a[i].s*k>f[i,j] then f[i,j]:=f[i-1,j-a[i].w*k]+a[i].s*k;
end;
writeln(f[n,v]);
end.
#1 fjxmlhx@2008-05-10 23:01:00
1492
回复
删除
var
n,m,s,w,ans,v,i,j,k:longint;
f:array[0..100000]of longint;
begin
readln(n,v);
ans:=0;
for i:=1 to n do
begin
readln(m,w,s);
for j:=v downto 1 do
for k:=0 to m do
if w*k>j then break else
if f[j]<f[j-w*k]+s*k then
f[j]:=f[j-w*k]+s*k;
end;
writeln(f[v]);
end.
加点剪枝啦..