讨论 / 大牛看下哪里出问题了
gbbbb 2008-03-03 04:56:00
点我顶贴 收藏 删除
var a:array[1..100]of longint;

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

c:array[1..100]of longint;

n,i,tmax,maxn,j:longint;

begin

fillchar(a,sizeof(a),0);

read(n);

for i:=1 to n do

begin

readln;

read(a[i]);

while not(eoln) do

begin

inc(b[i,0]);

read(b[i,b[i,0]]);

end;

end;

c[n]:=a[n];

maxn:=c[n];

for i:=n-1 downto 1 do

begin

tmax:=0;

if b[i,0]=0 then

begin

c[i]:=a[i];

if c[i]>maxn then maxn:=c[i];

end

else

begin

for j:=1 to b[i,0] do

if c[b[i,j]]>tmax then tmax:=c[b[i,j]];

c[i]:=a[i]+tmax;

if c[i]>maxn then maxn:=c[i];

end;

end;

writeln(maxn);

end.

#1 fjxmlhx@2008-03-02 05:42:00
回复 删除
你多少分?

这道题要树状DP。

#2 gbbbb@2008-03-03 04:56:00
回复 删除

b数组开小了

应该是【1..100,0..100】

调试后改了前面的忘改后面的

结果一改就AC了

这不能算是树状DP吧,一个点可能有多个前驱

查看更多回复
提交回复