【做题记录】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}\) 有两种情况:

  1. \(P_u\) 的概率留在原地,即 \(\begin{pmatrix}C_u\\i\end{pmatrix}=\begin{pmatrix}C_u+1\\i\end{pmatrix}\)
  2. \(\dfrac{1-P_u}{d_u}\) 的概率往相邻的点移动,设移动到 \(v\),则 \(\begin{pmatrix}C_u\\i\end{pmatrix}=\begin{pmatrix}C_v+1\\i\end{pmatrix}\)

\[\therefore E(\begin{pmatrix}C_u\\i\end{pmatrix})=P_uE(\begin{pmatrix}C_u+1\\i\end{pmatrix})+\dfrac{1-P_u}{d_u}\sum\limits_{v\in adj(u)}E(\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}\)

\[\therefore E(\begin{pmatrix}C_u+1\\i\end{pmatrix})=P_uE(\begin{pmatrix}C_u\\i\end{pmatrix}+\begin{pmatrix}C_u\\i-1\end{pmatrix})+\dfrac{1-P_u}{d_u}\sum\limits_{v\in adj(u)}E(\begin{pmatrix}C_v\\i\end{pmatrix}+\begin{pmatrix}C_v\\i-1\end{pmatrix}) \]

\(f_u=E(\begin{pmatrix}C_u\\i\end{pmatrix}),a_u=E(\begin{pmatrix}C_u\\i-1\end{pmatrix})\)

\[\therefore f_u=P_u(f_u+a_u)+\dfrac{1-P_u}{d_u}\sum\limits_{v\in adj(u)}(f_v+a_v) \]

只有 \(f\) 为未知

等式两边同时除以 \(\dfrac{1-P_u}{d_u}\),得

\[\therefore \dfrac{d_u}{1-P_u}f_u=\dfrac{d_u}{1-P_u}P_u(f_u+a_u)+\sum\limits_{v\in adj(u)}(f_v+a_v) \]

\[\therefore \dfrac{d_u(1-P_u)}{1-P_u}f_u=\dfrac{d_uP_u}{1-P_u}a_u+\sum\limits_{v\in adj(u)}(f_v+a_v) \]

这时候我们不妨理性理解一波,

对于 \(f\),其转移必定由它的父亲转移来,而转移中又必定带一个常数,所以不妨硬猜结论为:

\(f_u=f_{fa(u)}+T_u\)(常数为 \(T\)

\[\therefore d_uf_u=\dfrac{d_uP_u}{1-P_u}a_u+\sum\limits_{v\in son(u)}(f_u+t_v+a_v)+f_{fa}+a_{fa} \]

\(\because \sum\limits_{v\in son(u)}\times f_u=(d_u-1)f_{u}\)

\[\therefore f_u=\dfrac{d_uP_u}{1-P_u}a_u+\sum\limits_{v\in son(u)}(t_v+a_v)+f_{fa}+a_{fa} \]

又由定义知 \(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)\)

继续,回归答案,

\[E(C_u) =\sum\limits_{i=0}^{k}\begin{Bmatrix}k\\i\end{Bmatrix}i!E(\begin{pmatrix}C_u\\i\end{pmatrix}) \]

\(\because \begin{Bmatrix}k\\i\end{Bmatrix}i!=\sum\limits_{j=0}^{i}j^n \begin{pmatrix}i\\j\end{pmatrix}(-1)^{i-j}\)

\[\therefore \begin{Bmatrix}k\\i\end{Bmatrix}i!=\sum\limits_{j=0}^{i}\dfrac{j^n}{j!}\dfrac{(-1)^{i-j}}{(i-j)!} \]

观察一下右边的两个分式的分母,显然的卷积,用 \(\text{FFT}\) 乱搞一下即可。时间复杂度 \(O(k\log k)\)\(\text{FFT}\))。

总的时间复杂度 \(O(nk+k\log k)\)

posted @ 2022-01-07 19:26  trsins  阅读(121)  评论(0编辑  收藏  举报