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.
#2 gbbbb@2008-03-03 04:56:00
970
回复
删除
囧
b数组开小了
应该是【1..100,0..100】
调试后改了前面的忘改后面的
结果一改就AC了
这不能算是树状DP吧,一个点可能有多个前驱