Luogu P5643 [PKUWC2018]随机游走

题意

给出一棵 n 结点树,从结点 x 出发,每次从当前点的所有边中选一条走过去,Q 次询问给定一个点集 S,随机游走直到经过 S 中的每一个点至少一次的期望总步数,出发点 x 默认在开始时已经被经过。

n18,Q5000

解法

萌新第一次见到这种题,感觉很神。

首先先转化一下询问,设一个点的权值为第一次到达时所用的步数,于是询问就是求 S 中点权的期望最大值。

期望最大值是不好处理的,转化为期望最小值。

由期望形式的 MinMax 反演有:

E(max(S))=TS(1)|T|+1E(min(T))

于是想到对每个点集 T 预处理出 (1)|T|+1E(min(T)) 然后使用 FWT 计算高维前缀和。

接下来问题变为如何对于每个 T 快速求解 E(min(T)),设从 i 出发第一次到达 T 中的点的期望步数为 fi,那么对于不属于 T 中的点可以列出转移方程:

fi=1degi(i,j)Efj+1

我们需要求 fx 的值。

转移关系中有环,直接使用高斯消元复杂度显然过于夸张,but 由于树形结构的特殊性,我们可以把 fx 视为根,然后使用待定系数法。

考虑对每个 i 求出满足 fi=kiffai+bikibi,对于根结点 x 就有 fx=bx。归纳地考虑,对于叶子结点显然有 k=1,b=1,对于其他结点,其所有叶结点的 f 均为其一次函数,代入转移方程显然其 f 值也为其父结点 f 的一次函数。

具体地推式子:

fi=1degi(ffai+jsonifj)+degidegifi=ffai+jsonikjfi+bj+degidegifi=ffai+fijsonikj+jsonibj+degi(degijsonikj)fi=ffai+jsonibj+degifi=1degijsonikjffai+jsonibj+degidegijsonikj

ki=1degijsonikj,bi=degi+jsonibjdegijsonikj

最后只需要求 fx,即 bx

萌新从没见过这么神的期望 dp,菜菜。


__EOF__

本文作者0922-Blog
本文链接https://www.cnblogs.com/0922-Blog/p/P5463.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   wiki0922  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示