【做题记录】ZROI 树上游走
-
树上游走
- 算法:组合数学、斯特林反演、\(\text{FFT}\)
题目:
给定 \(n\) 个节点的树,从某个点出发开始随机游走:在点 \(u\) 时,有 \(p_u\) 的概率停留在原地,否则等概率地向相邻的点移动,直到移动到 \(1\) 号点停下。
求从每个点出发至停下,所花费的时间的 \(k\) 次方的期望。
\(n\le 10^5,k\le 10^5,nk\le 10^6\)
题解:
不妨假设当前点 \(u\) 到根节点的时间为 \(C_u\)。
那么概期望即为 \(E(C_u^k)\),显然无法求。
根据下降幂的定理,
\(\large n^m=\sum\limits_{i=0}^{m}\begin{Bmatrix}m\\i\end{Bmatrix}n^{\underline{i}}\)
得
\(\begin{aligned} E(C_u) & = E(\sum\limits_{i=0}^{k}\begin{Bmatrix}k\\i\end{Bmatrix}C_u^{\underline{i}}) \\ & = \sum\limits_{i=0}^{k}\begin{Bmatrix}k\\i\end{Bmatrix}i!E(\begin{pmatrix}C_u\\i\end{pmatrix})\end{aligned}\)
设 \(u\) 的度数为 \(d_u\),则对于 \(\begin{pmatrix}C_u\\i\end{pmatrix}\) 有两种情况:
- 有 \(P_u\) 的概率留在原地,即 \(\begin{pmatrix}C_u\\i\end{pmatrix}=\begin{pmatrix}C_u+1\\i\end{pmatrix}\)
- 有 \(\dfrac{1-P_u}{d_u}\) 的概率往相邻的点移动,设移动到 \(v\),则 \(\begin{pmatrix}C_u\\i\end{pmatrix}=\begin{pmatrix}C_v+1\\i\end{pmatrix}\)
又 \(\because \begin{pmatrix}n\\m\end{pmatrix}=\begin{pmatrix}n-1\\m\end{pmatrix}+\begin{pmatrix}n-1\\m-1\end{pmatrix}\)
设 \(f_u=E(\begin{pmatrix}C_u\\i\end{pmatrix}),a_u=E(\begin{pmatrix}C_u\\i-1\end{pmatrix})\)
只有 \(f\) 为未知
等式两边同时除以 \(\dfrac{1-P_u}{d_u}\),得
这时候我们不妨理性理解一波,
对于 \(f\),其转移必定由它的父亲转移来,而转移中又必定带一个常数,所以不妨硬猜结论为:
\(f_u=f_{fa(u)}+T_u\)(常数为 \(T\))
又 \(\because \sum\limits_{v\in son(u)}\times f_u=(d_u-1)f_{u}\)
又由定义知 \(t_u=f_u-f_{fa}\)
\(\therefore t_u=\dfrac{d_uP_u}{1-P_u}a_u+\sum\limits_{v\in son(u)}(t_v+a_v)+a_{fa}\)
然后 \(\text{dp}\) 即可。时间复杂度 \(O(nk)\)。
继续,回归答案,
又 \(\because \begin{Bmatrix}k\\i\end{Bmatrix}i!=\sum\limits_{j=0}^{i}j^n \begin{pmatrix}i\\j\end{pmatrix}(-1)^{i-j}\)
观察一下右边的两个分式的分母,显然的卷积,用 \(\text{FFT}\) 乱搞一下即可。时间复杂度 \(O(k\log k)\)(\(\text{FFT}\))。
总的时间复杂度 \(O(nk+k\log k)\)。