讨论 / 为什么错了?(大牛们看看)(得了90分)
tss92 2008-10-22 05:23:00
点我顶贴 收藏 删除
var

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.

#1 tss92@2008-08-11 01:40:00
回复 删除
。。不好意思。。上面打错了。。没有文件读写。。
#2 tss92@2008-08-11 04:41:00
回复 删除
求人帮忙啊~~
#3 世纪末的魔术师@2008-08-11 05:19:00
回复 删除
if f[m,l]<0 then f[m,l]=0;
#4 tss92@2008-08-11 17:30:00
回复 删除
还是不对!

测试结果2: 输出过长|用户输出数据超过标准输出两倍[标准输出1位|选手输出5位]

#5 世纪末的魔术师@2008-08-11 21:05:00
回复 删除
把for i:=0 to l do f[0,i]:=0;略了。。。
#6 tss92@2008-08-11 21:55:00
回复 删除
还是不对。。发发你的程序吧!
#7 tss92@2008-08-11 22:02:00
回复 删除
谢谢了!

是评测机的问题!

#8 世纪末的魔术师@2008-08-11 23:21:00
回复 删除
其实我对背包问题也是很无解的。。。类型很容易知道。初值对结果影响挺大的。
#9 lizhixin@2008-10-22 04:44:00
回复 删除
测试结果1: 通过本测试点|有效耗时171:ms

测试结果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

#10 DarkMaster@2008-10-22 05:23:00
回复 删除
谁让你当无解的时候你输出负数呢?

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.

这样不就行了

查看更多回复
提交回复