题意:给出一棵 个节点的树,从节点 出发,每时刻随机挑选一条出边行走。
有 个询问,每次指定一个点集
,求将集合中每个点都至少经过一次的期望耗时。
答案对 取模 ,,,时限 。
设 为 点被第一次经过的时间。则答案为 使用 反演 只需对每个
求处 。即:给出点集 ,求从
出发第一次达到点集中的某个点的期望步数。
最后,用高维前缀和即可
计算出所有集合的答案。
设 为 的度数, 为从 点出发到达点集 的期望耗时,若 ,显然有 。
否则,有如下等式
可以直接高斯消元,复杂度为 ,无法承受。
考虑树形消元,一个套路是:先将父亲的 DP 值设为未知数,把儿子的 DP
值写成父亲的(一次)函数,该函数的系数由子树决定。
设 ,其中
由 的子树完全决定,也是我们要 DP
的东西。
现在可以直接 DP 求出
了。
由于 是根,没有父亲,答案就是
。
对每个 做上述 DP,复杂度为
。