ことばがありあまれどなお、 このゆめはつづい|

trsins

园龄:3年10个月粉丝:18关注:2

【做题记录】ZROI 树上游走

  • 树上游走

    • 算法:组合数学、斯特林反演、FFT

题目:

给定 n 个节点的树,从某个点出发开始随机游走:在点 u 时,有 pu 的概率停留在原地,否则等概率地向相邻的点移动,直到移动到 1 号点停下。

求从每个点出发至停下,所花费的时间的 k 次方的期望。

n105,k105,nk106

题解:

不妨假设当前点 u 到根节点的时间为 Cu

那么概期望即为 E(Cuk),显然无法求。

根据下降幂的定理,

nm=i=0m{mi}ni_

E(Cu)=E(i=0k{ki}Cui_)=i=0k{ki}i!E((Cui))

u 的度数为 du,则对于 (Cui) 有两种情况:

  1. Pu 的概率留在原地,即 (Cui)=(Cu+1i)
  2. 1Pudu 的概率往相邻的点移动,设移动到 v,则 (Cui)=(Cv+1i)

E((Cui))=PuE((Cu+1i))+1Puduvadj(u)E((Cv+1i))

(nm)=(n1m)+(n1m1)

E((Cu+1i))=PuE((Cui)+(Cui1))+1Puduvadj(u)E((Cvi)+(Cvi1))

fu=E((Cui)),au=E((Cui1))

fu=Pu(fu+au)+1Puduvadj(u)(fv+av)

只有 f 为未知

等式两边同时除以 1Pudu,得

du1Pufu=du1PuPu(fu+au)+vadj(u)(fv+av)

du(1Pu)1Pufu=duPu1Puau+vadj(u)(fv+av)

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

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

fu=ffa(u)+Tu(常数为 T

dufu=duPu1Puau+vson(u)(fu+tv+av)+ffa+afa

vson(u)×fu=(du1)fu

fu=duPu1Puau+vson(u)(tv+av)+ffa+afa

又由定义知 tu=fuffa

tu=duPu1Puau+vson(u)(tv+av)+afa

然后 dp 即可。时间复杂度 O(nk)

继续,回归答案,

E(Cu)=i=0k{ki}i!E((Cui))

{ki}i!=j=0ijn(ij)(1)ij

{ki}i!=j=0ijnj!(1)ij(ij)!

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

总的时间复杂度 O(nk+klogk)

本文作者:trsins

本文链接:https://www.cnblogs.com/trsins/p/15776584.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   trsins  阅读(131)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示