题目:
给定 n 个节点的树,从某个点出发开始随机游走:在点 u 时,有 pu 的概率停留在原地,否则等概率地向相邻的点移动,直到移动到 1 号点停下。
求从每个点出发至停下,所花费的时间的 k 次方的期望。
n≤105,k≤105,nk≤106
题解:
不妨假设当前点 u 到根节点的时间为 Cu。
那么概期望即为 E(Cku),显然无法求。
根据下降幂的定理,
nm=m∑i=0{mi}ni–
得
E(Cu)=E(k∑i=0{ki}Ci–u)=k∑i=0{ki}i!E((Cui))
设 u 的度数为 du,则对于 (Cui) 有两种情况:
- 有 Pu 的概率留在原地,即 (Cui)=(Cu+1i)
- 有 1−Pudu 的概率往相邻的点移动,设移动到 v,则 (Cui)=(Cv+1i)
∴E((Cui))=PuE((Cu+1i))+1−Pudu∑v∈adj(u)E((Cv+1i))
又 ∵(nm)=(n−1m)+(n−1m−1)
∴E((Cu+1i))=PuE((Cui)+(Cui−1))+1−Pudu∑v∈adj(u)E((Cvi)+(Cvi−1))
设 fu=E((Cui)),au=E((Cui−1))
∴fu=Pu(fu+au)+1−Pudu∑v∈adj(u)(fv+av)
只有 f 为未知
等式两边同时除以 1−Pudu,得
∴du1−Pufu=du1−PuPu(fu+au)+∑v∈adj(u)(fv+av)
∴du(1−Pu)1−Pufu=duPu1−Puau+∑v∈adj(u)(fv+av)
这时候我们不妨理性理解一波,
对于 f,其转移必定由它的父亲转移来,而转移中又必定带一个常数,所以不妨硬猜结论为:
fu=ffa(u)+Tu(常数为 T)
∴dufu=duPu1−Puau+∑v∈son(u)(fu+tv+av)+ffa+afa
又 ∵∑v∈son(u)×fu=(du−1)fu
∴fu=duPu1−Puau+∑v∈son(u)(tv+av)+ffa+afa
又由定义知 tu=fu−ffa
∴tu=duPu1−Puau+∑v∈son(u)(tv+av)+afa
然后 dp 即可。时间复杂度 O(nk)。
继续,回归答案,
E(Cu)=k∑i=0{ki}i!E((Cui))
又 ∵{ki}i!=i∑j=0jn(ij)(−1)i−j
∴{ki}i!=i∑j=0jnj!(−1)i−j(i−j)!
观察一下右边的两个分式的分母,显然的卷积,用 FFT 乱搞一下即可。时间复杂度 O(klogk)(FFT)。
总的时间复杂度 O(nk+klogk)。
本文作者:trsins
本文链接:https://www.cnblogs.com/trsins/p/15776584.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步