$ Noip2014 / Luogu1351 $共同の重みツリー

$ Luogu $

 

$説明$

2点のそれぞれ$距離のために与えられた木、$ 2との間の「合計重量」を生成することができ、「共同重量」は、2つの数の積として定義される。合計重量の全ての最大合計重量を求め、そしてそして、値。両方の数字は、順序付けられている成人の訳語が終了した後、彼らは$ * $ 2模索しなければならないことに注意してください。

 

$ソル$

考える消防署の確立の$のOVO $。

$ 2から$ポイントに、彼らは兄弟、祖父母と孫ではありません直接$がDFSの$回答のペアのよう再度更新ということです。

兄弟間の最適化を更新する2つの答えがあります。

1、$ I> 1 $上に列挙[i]は$降順、W $ S $ $に従って全て兄弟アレイの添加後。貪欲

[S [I]] * wの$で[S [1]] $は最大を更新します。

2.分配率は、三点の兄弟の重みがあると仮定乗算次いで、重みの合計が共同で、A、B、Cの$ $ました

$ A * B + *のC + b *表C = *(B + C)+ b *表Cの$。ここでは、一次$の卵の$です。

 

$コード$

 

書式#include <iostreamの> 
の#include <cstdioを> 
する#include <CStringの> 
の#include <キュー> 
の#include <アルゴリズム>
 に#define ILインライン
 の#define Rgを登録し
 ます。#define行く(I、A、B)は(RG int型I = A ; iが<= Bと; ++ i)は、
 の#defineはい(I、B)(RG INT I = Aの; I> = B; - I)
 の#define E(I、U)のために(RG INT I = B [U]; iが[I] .nt)=;私
 の#defineを MEM(A、B)のmemset(A、B、はsizeof(A))
 の#defineっ長い長
 の#define DB二重
 の#define INF 2147483647を
 使用して 名前空間はstd; 
ILのINTのリード()
{ 
    RgをINT X = 0、Y = 1チャー C = GETCHAR()。
    一方、(C < ' 0 ' || C> ' 9 '){ もし、(C == ' - ')Y = - 1 ; C = GETCHAR();}
     一方、(C> = ' 0 ' && C <= ' 9 '){X =(X << 1)+(X << 3)+ C- ' 0 ' ; C = GETCHAR();}
     戻りのx *のY。
 N = 200010、MOD = 10007 int型N、CT、B [N]、[N] W、AS1、AS2。
構造体ノード{ int型 V、NT;} [N * 2 ]。
IL ボイド追加(INT U、INT V){[++ CT] =(ノード){V、B [U]}; B [U] = CT;} 
IL ブール CMP(int型のx、int型の Y){ リターン [X]> W [Y] W;} 
IL 空隙 DFS(INT U、INT F)
{ 
    RgをINT S [N]、NM = 0、DAT; S [ 0 ] = 0; 
    E(I、U)
    { 
        RgをINT V = [I] .V。
        もし(vは== f)を続けます
        DFS(V、U); 
        S [ ++ NM] = V。
        DATは、 W = [V] * W [F]。
        AS1 = MAX(AS1、DAT); AS2 =(AS2 + DAT%のMOD)%MOD。
    } 
    ソート(S + 1、S + NM + 1 、CMP)。
    行く(I、2、NM)AS1 = MAX(AS1、W [S [I]] * W [S [ 1 ])。
    行く(I、1、NM)S [I] =(S [I- 1 ] + W [S [I])%MOD。
    行く(I、2、NM)AS2 =(AS2 +(S [i]を-s [I- 1 ])* S [I- 1 ])%MOD。
} 
int型のmain()
{ 
    N = )(読み取ります。
    行く(iは、1、N- 1){RgをINT U =(読み取り)、V = read()は、追加(u、v)は、(V、U)を追加;} 
    (I、行く1 wは、N)[ I] = )(読み取ります。
    DFS(10 ); 
    printf(" %D%D \ n "、AS1、AS2 * 2%のMOD)。
    リターン 0 ; 
}
コードの表示

 

 

 

おすすめ

転載: www.cnblogs.com/forward777/p/11411429.html
おすすめ