參考題解地址
1. 從樹上任意一個節點開始,跳到其隨機一個後代,跳到葉子的期望次數為 \(H_{siz_u}=\ln(siz_u)\)。
證明:
首先考慮一條鏈的情況。設在第 \(i\) 個點期望次數為 \(a_u\),\(\{a\}\) 的字首和為 \(\{S\}\),那麼就有 \(a_u=1+\frac{S_{u-1}}{u-1}\)。
\[a_u=1+\frac{S_{u-1}}{u-1}\\
(u-1)a_u=u-1+S_{u-1}\\
ua_{u+1}=u+S_u\\
ua_{u+1}-(u-1)a_u=a_u+1\\
a_{u+1}=a_u+\frac 1 u\\
a_u=H_{u-1}
\]
(注意調和級數的 \(\ln\) 不帶常數)
對於非鏈的樹,隨便挑一個叉出去的子樹接到一個葉子下面,顯然每個節點的期望步數增加,總步數增加。於是鏈是最壞的情況,證畢。
2. 對於任意一棵樹,可以將其劃分成 \(O(\log)\) 層葉鏈,每層葉鏈定義為剝出葉子及其向上跳最遠使得沿途節點只有一個兒子的鏈。
證明:
設 \(T(u)\) 為節點 \(u\) 被刪的時間,則若 \(u\) 的兒子 \(v\) 中 \(T(v)\) 最大值唯一,則 \(T(u)=T(v)\),否則 \(T(u)=T(v)+1\)。
不難歸納證明使得 \(T(u)\ge k\) 時 \(siz_u\ge 2^k-1\),證畢。
3. 對於一棵樹的任意一種點分形式(不一定選重心),記一次分治的代價為分出的所有非最大子樹的 \(siz\) 之和,則總代價為 \(O(n\log n)\)。
證明:
考慮每個點的貢獻,每當它對代價產生貢獻時 \(siz\) 一定翻倍,於是顯然貢獻之和為 \(O(n\log n)\)。