Luogu5643 [PKUWC2018] 随机游走

题意:给出一棵 个节点的树,从节点 出发,每时刻随机挑选一条出边行走。

个询问,每次指定一个点集 ,求将集合中每个点都至少经过一次的期望耗时。

答案对 取模 ,,时限


点被第一次经过的时间。则答案为 使用 反演 只需对每个 求处 。即:给出点集 ,求从 出发第一次达到点集中的某个点的期望步数。

最后,用高维前缀和即可 计算出所有集合的答案。


的度数, 为从 点出发到达点集 的期望耗时,若 ,显然有

否则,有如下等式

可以直接高斯消元,复杂度为 ,无法承受。


考虑树形消元,一个套路是:先将父亲的 DP 值设为未知数,把儿子的 DP 值写成父亲的(一次)函数,该函数的系数由子树决定。

,其中 的子树完全决定,也是我们要 DP 的东西。

现在可以直接 DP 求出 了。

由于 是根,没有父亲,答案就是

对每个 做上述 DP,复杂度为