i,n,m,l,j,k:longint;
t,mi:array[1..100000] of longint;
f:array[0..1000,0..1000] of longint;
function max(a,b:longint):longint;
begin
if a>b then exit(a)
else exit(b);
end;
function min(a,b:longint):longint;
begin
if a>b then exit(b)
else exit(a);
end;
begin
assign(input,’a.in’);reset(input);
assign(output,’a.out’);rewrite(output);
readln(n,m,l);
for i:=0 to 1000 do
for j:=0 to 1000 do f[i,j]:=-999999999;
for i:=0 to l do f[0,i]:=0;
for i:=1 to n do readln(t[i],mi[i]);
for i:=1 to n do
for j:=min(i,m) downto 1 do
for k:=t[i] to l do
f[j,k]:=max(f[j,k],f[j-1,k-t[i]]+mi[i]);
writeln(f[m,l]);
close(input);close(output);
end.
测试结果2: 输出过长|用户输出数据超过标准输出两倍[标准输出1位|选手输出8位]
测试结果3: 通过本测试点|有效耗时63:ms
测试结果4: 通过本测试点|有效耗时63:ms
测试结果5: 通过本测试点|有效耗时172:ms
测试结果6: 通过本测试点|有效耗时187:ms
测试结果7: 通过本测试点|有效耗时188:ms
测试结果8: 通过本测试点|有效耗时188:ms
测试结果9: 通过本测试点|有效耗时188:ms
测试结果10: 通过本测试点|有效耗时62:ms
program p95(input,output);
var
f:array[0..1000,0..1500] of longint;
t,m:array[1..1000] of longint;
i,j,k,l,n,mm:longint;
begin
readln(n,mm,l);
for i:=1 to n do readln(t[i],m[i]);
for i:=0 to mm do
for j:=0 to l do
f[i,j]:=-999999;
for i:=0 to l do f[0,i]:=0;
for i:=1 to n do
for j:=mm downto 1 do
for k:=l downto 1 do
if k>=t[i] then if f[j-1,k-t[i]]+m[i]>f[j,k] then f[j,k]:=f[j-1,k-t[i]]+m[i];
if f[mm,l]<0 then write(0)
else write(f[mm,l]);
end.
这样不就行了