讨论 / 哪儿错了?WA=20
JasonX 2010-11-09 22:13:00
点我顶贴 收藏 删除
var

maxx,p,q,sss,n,m,i,j:longint;

vv,v,pp,qq,a:array[0..10000] of longint;

f:array[0..100,0..32000] of longint;

k:array[0..1000,0..100] of longint;

function max(a,b:longint):longint;

begin

max:=a;

if b>a then

max:=b;

end;

begin

read(n,m);

for i:=1 to m do

begin

read(v[i],pp[i],qq[i]);

vv[i]:=v[i]*pp[i];

if qq[i]<>0 then

begin

inc(k[qq[i],0]);

k[qq[i],k[qq[i],0]]:=i;

end;

end;

for i:=1 to m do

begin

for j:=1 to n do

begin

if qq[i]<>0 then

begin

f[i,j]:=f[i-1,j];

continue;

end;

f[i,j]:=f[i-1,j];

if j>=v[i] then

f[i,j]:=max(f[i,j],f[i-1,j-v[i]]+vv[i]);

p:=k[i,1];

q:=k[i,2];

if j>=v[p]+v[i] then

f[i,j]:=max(f[i-1,j-v[p]-v[i]]+vv[p],f[i,j]);

if j>=v[q]+v[i] then

f[i,j]:=max(f[i-1,j-v[q]-v[i]]+vv[q],f[i,j]);

if j>=v[p]+v[q]+v[i] then

f[i,j]:=max(f[i-1,j-v[p]-v[q]-v[i]]+vv[p]+vv[q],f[i,j]);

end;

end;

writeln(f[m,n]);

end.

查看更多回复
提交回复