Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

你贴的代码里d数组是什么意思?

Posted by 415599088 at 2011-07-25 21:41:40 on Problem 1947
In Reply To:Re:二维数组,树形dp,背包转移 Posted by:lydrainbowcat at 2011-07-13 22:21:36
> var
>  a,f,d:array[0..150,0..150]of longint;
>  v:array[0..150]of boolean;
>  n,m,i,j,x,y,root,ans:longint;
> 
> procedure treedp(x:longint);
>  var
>   i,j,k:longint;
>  begin
>   for i:=1 to a[x,0] do treedp(a[x,i]);
>   fillchar(d,sizeof(d),127);
>   d[0,0]:=0;
>   for i:=1 to a[x,0] do
>    begin
>     for j:=0 to m do
>      if d[i-1,j]<n then d[i,j]:=d[i-1,j]+1;
>     for j:=1 to m do
>      if f[a[x,i],j]<n then
>       for k:=0 to m-j do
>        if (d[i-1,k]<n)and(d[i-1,k]+f[a[x,i],j]<d[i,k+j]) then
>         d[i,k+j]:=d[i-1,k]+f[a[x,i],j];
>    end;
>   for j:=m-1 downto 0 do
>    if d[i,j]<n then d[i,j+1]:=d[i,j];
>   if a[x,0]=0 then f[x,1]:=0;
>   for j:=1 to m do
>     if f[x,j]>d[i,j] then f[x,j]:=d[i,j];
>   if x=root then
>    if ans>f[x,m] then ans:=f[x,m] else
>   else if ans>f[x,m]+1 then ans:=f[x,m]+1;
>  end;
> 
> begin
>  readln(n,m);
>  for i:=1 to n-1 do
>   begin
>    readln(x,y);
>    inc(a[x,0]);
>    a[x,a[x,0]]:=y;
>    v[y]:=true;
>   end;
>  for i:=1 to n do if not v[i] then root:=i;
>  fillchar(f,sizeof(f),127);
>  ans:=n;
>  treedp(root);
>  writeln(ans);
> end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator