讨论 / 质疑4、6、8、10四个点
Mato战胜libojie 2009-07-08 02:15:00
点我顶贴 收藏 删除
VAR

v, w, f: ARRAY[0..100] OF LONGINT;

n, t: LONGINT;

PROCEDURE init;

VAR

i, j, n0: LONGINT;

BEGIN

n0 := 0;

READLN(n, t);

FOR i:=1 TO n DO BEGIN

FOR j:=1 TO t DO BEGIN

INC(n0);

READ(v[n0]);

IF v[n0] < 0 THEN v[n0] := 0;

w[n0] := j;

END;

READLN;

END;

END;

PROCEDURE pack4(g: LONGINT);

VAR

i, j, s1, s2, max: LONGINT;

BEGIN

FOR j:=t DOWNTO 0 DO BEGIN

max := 0;

FOR i:=(g - 1) * t + 1 TO g * t DO BEGIN

IF j < w[i] THEN CONTINUE;

s1 := f[j];

s2 := f[j - w[i]] + v[i];

IF s1 > max THEN max := s1;

IF s2 > max THEN max := s2;

END;

f[j] := max;

END;

END;

PROCEDURE xxx;

VAR

i: LONGINT;

BEGIN

FOR i:=0 TO 100 DO f[i] := 0;

FOR i:=1 TO n DO

pack4(i);

END;

BEGIN

init;

xxx;

WRITE(f[t]);

END.

#1 woshiniba@2009-05-22 06:15:00
回复 删除
读入过程有问题 详情见本题题解

http://www.rqnoj.cn/Solution_Show.asp?DID=4547

#2 Mato完整版@2009-05-27 08:01:00
回复 删除
LS:

什么读入过程有问题!

把数组的[1..100]改成[1..10000]就对了。

[color=blue]本题唯一的用处是让人的RP变为-∞[/color]

#3 Jollwish@2009-07-08 01:32:00
回复 删除
我怎么觉得第十个点有问题...

测试结果1: 通过本测试点|有效耗时157ms

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

测试结果3: 通过本测试点|有效耗时172ms

测试结果4: 通过本测试点|有效耗时157ms

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

测试结果6: 通过本测试点|有效耗时172ms

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

测试结果8: 通过本测试点|有效耗时172ms

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

测试结果10: 测试结果错误.错误结果为:52

正确结果应为:3

#4 Jollwish@2009-07-08 01:37:00
回复 删除
我囧了。。。

就是把

var a,b:array[1..100,1..100]of longint;

改成

var a,b:array[1..100,0..100]of longint;

但越界问题怎么只错一个呢。。。

#5 小小小学生@2009-07-08 02:15:00
回复 删除
越界。。。。

应该会错误吧!?

。。。。。。。。。。。。。。。。

查看更多回复
提交回复