p,v:array[1..10000,0..2]of longint;
f:array[0..32000]of longint;
i,j,k,m,n,a,b,c,v0,v1,v2,p0,p1,p2:longint;
begin
assign(input,'e:/1.in');
reset(input);
read(n,m);
n:=n div 10;
for i:=1 to m do
begin
read(a,b,c);
if c=0 then c:=i;
for j:=0 to 2 do
if v[c,j]=0 then
begin
v[c,j]:=a div 10;
p[c,j]:=v[c,j]*b;
break;
end;
end;
for i:=1 to m do
if v[i,0]<>0 then
begin
v0:=v[i,0];
v1:=v[i,1];
v2:=v[i,2];
p0:=p[i,0];
p1:=p[i,1];
p2:=p[i,2];
for j:=n downto 0 do
begin
if (j>=v0)and(f[j]<f[j-v0]+v0*p0)then
f[j]:=f[j-v0]+p0;
if (j>=v0+v1)and(f[j]<f[j-v0-v1]+v0*p0+v1*p1)then
f[j]:=f[j-v0-v1]+p0+p1;
if (j>=v0+v2)and(f[j]<f[j-v0-v2]+v0*p0+v2*p2)then
f[j]:=f[j-v0-v2]+p0+p2;
if (j>=v0+v1+v2)and(f[j]<f[j-v0-v1-v2]+v0*p0+v1*p1+v2*p2)then
f[j]:=f[j-v0-v1-v2]+p0+p1+p2;
end;
end;
writeln(f[n]*10);
end.
遗憾的只过了第二个点,有没有知道为什么的,结果与正确结果相差也不是太多,我稍微得给简略的一下,但是找不出来错误在哪里,希望能看出来的帮帮忙谢谢!