2020.03.22日常總結

洛谷P1395     會議\color{green}{\text{洛谷P1395\ \ \ \ \ 會議}}


【題意】:\color{blue}{\text{【題意】:}}

  • 給定一棵無根樹,定義 uuvv 的距離爲簡單路徑 (u,v)(u,v) 上的邊的數量。我們把它記爲 Tu,vT_{u,v}
  • 定義以 uu 爲該無根樹時的花費爲 i=1nTu,i\sum\limits_{i=1}^{n} T_{u,i}。即所有點到根 uu 的距離和。我們把它記爲 GuG_u
  • 求一個點 uu,使得 GuG_u 最小。輸出 uuGuG_u。如有多解,則輸出最小的 uu
  • 對於 100%100 \% 的數據,1n5×1041\leq n \leq 5 \times 10^4

【思路】:\color{blue}{\text{【思路】:}}

對於無根樹類的題目,我們可以先指定一個點當作根。然後再考慮。

具體地,我們先求出以 11 爲根時以每個點 uu 爲根的子樹的大小 fuf_uG1G_1

考慮根從點 uu 轉移到它的一個兒子 vv 時總花費的變化量。可以發現,有等量關係 Gv=Gufv+(nfv)G_v=G_u - f_v + (n - f_v)

什麼意思?即 vv 的所有兒子到根的距離都減少了 11,但是所有不是 vv 的兒子到根的距離都增加了 11。我們可以根據這個來算出所有的 GG。可以配圖理解 (圖醜請原諒)

在這裏插入圖片描述

總的時間複雜度爲 O(n)O(n)。可以通過更大的數據(比如 1×1061 \times 10^6)。


【代碼】:\color{blue}{\text{【代碼】:}}

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章