var
time,m:integer;t:array [1..1000] of integer;v:array [1..100] of integer;
a:array [0..100,0..1000] of integer;
i,j:integer;
begin
readln(time,m);
for i:=1 to m do
begin
read(t);readln(v);
end;
for i:=1 to m do
for j:=1 to time do
if j>=t then if a[i-1,j]>a[i-1,j-t]+v then a[i,j]:=a[i-1,j]
else a[i,j]:=a[i-1,j-t]+v
else a[i,j]:=a[i-1,j];
write(a[m,time]);
end.
这是采药问题,完全的01背包,你可以把t当作重量,v当作价值