讨论 / 帮忙给看看,为什么只过俩点
649273254 2010-10-19 19:29:00
点我顶贴 收藏 删除
Unaccepted

测评机: Xeost[5]

得分: 20分

提交日期: 2010-10-20 9:37:00

有效耗时: 94毫秒

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

测试结果2: 通过本测试点|有效耗时47ms

测试结果3: 测试结果错误.错误结果为:-2092034700

正确结果应为:71881

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

测试结果5: 测试结果错误.错误结果为:-2147361382

正确结果应为:323129

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

测试结果7: 通过本测试点|有效耗时47ms

测试结果8: 测试结果错误.错误结果为:-2092034700

正确结果应为:71881

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

测试结果10: 测试结果错误.错误结果为:-2147361382

正确结果应为:323129

提交代码: view sourceprint?01.var

02.a,b:array[0..200] of longint;

03.f:array[0..200,0..2000] of longint;

04.n,m,i,j,k,x,y:longint;

05.function jc(x,y:longint):longint;

06.var

07.tmp,i:longint;

08.begin

09.

tmp:=x;

10.

for i:=2 to y do

11.

tmp:=tmp*x;

12.

jc:=tmp;

13.

//writeln(jc);

14.end;

15.function min(x,y:longint):longint;

16.begin

17.

if x>y then min:=y else min:=x;

18.end;

19.begin

20.

readln(n,m);

21.

for i:=1 to m do

22.

begin

23.

readln(a[i],b[i]);

24.

//writeln(a[i],b[i]);

25.

end;

26.

for i:=1 to n do f[1,i]:=a[1]*jc(i,b[1]);

27.

for i:=2 to m do

28.

for j:=1 to n do

29.

begin

30.

f[i,j]:=maxlongint;

31.

for k:=i-1 to j-1 do

32.

f[i,j]:=min(f[i-1,k]+a[i]*jc(j-k,b[i]),f[i,j])

33.

end;

34.

writeln(f[m,n]);

35.

close(input);

36.end.

#1 407137009@2010-10-19 19:29:00
回复 删除
回复 楼主649273254 的帖子

第32行有错误

应该

for k:=0 to j do

必须int64

f[i,j]的初值还是手动来一个更大的比较好

另外 数组开的要比[0..200,0..20]大一点才好。。

我因为数组小了提交了5.6次 特无语

给粉撒~~

查看更多回复
提交回复