NOIPシミュレーションは、25をテスト

爆発の背後にある試験の考え方。私はT2のちょうど2時間は、その後、急いで呼ばチートポイントを偽捨てられました

T1は、であり、m = 0検索します

主に多くに分け、T3を行うことが最初はいくつかが、一目見ただけで87分(ブラインド)があったことがわかりました。

その後に考えたのは、チェーン、69ポイントを感じることはありません

2.6sを実行見出さ第二の試験少し大きなサンプル、69ポイントのアウトコードの後、爆発の考え方は、47のスコアが予想されます

22ポイント、69ポイントを獲得した4000ポイントの後。

RK3にT3剛とそれほど成功

T1。

  包含と除外は良い質問です、テストに考え抜かれていない受験を考え、インクルージョン排除を発見する方法について考えてきました。

  正解は包含排除エッジです。

T2。

  オイラー

T3。

  カット69ポイントで0.5時間、言いたい、アイデアと正のソリューションは完全に異なる試験。

  フェイス兄と正の解は、全体の方程式の解決を簡素化することで、実際には、この式は、任意の2つのツリー間の距離の2乗であると私たちはその答えに、各ポイントの寄与を考慮することができます。

  息子の答えに父から転送する方法、木のDPを考えてみましょう

  [I] wは、我々は、アル[i]の二乗の和からiをiと、ANS [i]は、サブツリーを表す距離にすべての点が全ての点サブツリーを表し、SIZ [i]はサブツリーの大きさを示しします父から私を表現します。

  そして、そこに

  年[前] + =年間[I] + 2 * [I] * W [I] + W [I] * W [I] * SIZ [Y]

 [FA] + = [I] + SIZで[I] * W [i]は

 私たちは、それが[1]、我々は、我々はO(N)の複雑さの解決策を見つけることができ、上記式でルートを変更することができANS注文することができ

  O(NQ)、大きな一定の総複雑性は、コードは、達成するのが非常に簡単です。

  

1つの#include <ビット/ STDC ++ H>
 2  の#define MOD十億七
 3  の#defineっ長い長い
 4  使って 名前空間STDを、
5  インラインLLリード(){
 6      INT X = 0 7      チャー CH = GETCHAR()。
8      一方(CH < ' 0 ' || CH> ' 9 ')CH = GETCHAR()。
9      一方(CH> = ' 0 ' && CH <= ' 9 ')x =(x << 3)+(X <<1)+ CH- 48、CH = GETCHAR()。
10      リターンX。
11  }
 12  INT nは、[F 100005 ]は、FI [ 100005 ]、[ 100005 ]、[ので100005 ]、TOT、SB、Q。
13 LLのSIZ [ 100005 ]ら[ 100005 ]、牙[ 100005 ] ANS、NI、[W 100005 ]。
14インラインボイド追加(int型のx、int型のY){
 15      NE [++ TOT = Fiが[X]。
16      Fiの[X] = TOT。
17     【TOTは] = yと、
18  }
 19  空隙 DFS(int型X){
 20      SIZ [X] = 1 ;文献[X] = 0、牙[X] = 0 ;
21      のためには、int型 I = Fiが[X]; I; I = NE [I]){
 22          のint Y = [I]。
23の         DFS(Y)。
24          ら[X] =(AL [X] +ら[Y] +(SIZ [Y] * W [Y]))%MOD。
25          牙[X] =(ファング[X] +牙[Y] +ら[Y] * W [Y] * 2 + W [Y] * W [Y]%MOD * SIZ [Y])%MOD。
26          SIZ [X] + = SIZ [Y]。
27      }
 28 }
 29  空隙 DFS2(INT X){
 30件      のANS =(ANS +ファング[X])%のMOD。
31      のためには、int型 I = Fiが[X]; I; I = NE [I]){
 32          のint Y = 乃至[I]。
33          =(ファング[X]牙【と】-at [と] * W [Y] * LLのFX 2 -w [Y] * W [Y] MOD *%のSIZ [と])%のMOD、
 34              X = ([X] -at [と] - (SIZ [Y] * W [かつ]))%MOD。
35          牙[Y] =(牙[と] + FX + AX * [Y] * W 2 + W [Y] * [Y] MOD *%(N-SIZ [と])W)%MOD。
36          [Y] =([Y] Wにおける[かつ] + AX +(N-SIZ [と])*)%のMOD。
37          DFS2(Y)。
38     }
 39  }
 40  INT メイン(){
 41は      、SB =読み取る()、N =(読み取り)、Q = 読み取り()。
42      NI = 50000004 43      のためにint型 I = 2 ; iが<= N; iが++)([I]読み取り= F)は、[I] = W )(読み取り、([i]は、I f)を加えます。
44の      DFS(1 )。
45      DFS2(1 )。
46      のprintf(" %LLDする\ n "、(ANS + MOD)%MOD * NI%MOD)。
47      一方(q-- ){
 48          INT U = 読み取ります()。
49         LL広告が= 読んで();
50          [U] =([U] +広告w)の重量%のMOD。
51の          DFS(1 )。
52の          ANS = 0 53          DFS2(1 )。
54          のprintf(" %LLDする\ n "、(ANS + MOD)%MOD * NI%MOD)。
55      }
 56      リターン 0 57 }
コードの表示

正の解はグーません。

おすすめ

転載: www.cnblogs.com/hzoi-cbx/p/11374107.html