Skip to content
0

CF1823F Random Walk 笔记

两种思路都想到了,但是两种做法都没想出来。

做法一

模拟一下这个随机游走的过程,当他走错路的时候,他一定会走回头路,不然就不一定。

但是这个好像不好 DP,因为点和点的状态之间关联不大。

打开题解,发现可以考虑一条边的经过次数,由于每个点出发选择任意一条边的概率相同,因此一个点的所有出边经过的期望次数相同,设这个期望次数是 fu,如果这条边 uvst 路径上,那么他一定会比走 vu 的次数多一次,因此 fufv+1,否则,进入 v 的子树后一定会再从 vu 里走出来,因此 fufv,只需要两次 DFS 即可求解,最终的答案是 fu×degu,时间复杂度 O(n),空间复杂度 O(n)

做法二

随机游走……这不是我们有后效性 DP 高斯消元求解吗?

不好孩子们是 n2×105……n3 被击毙了。

但是现在是在树上,所以对于 DP 方程

ft=1,fu=[u=S]+(u,v)Evtfvdegv

我们可以寻找更多性质。

考虑这个转移比树形 DP 多了什么,正常的树形 DP 是 fv=kvfu+bv,即只和自己与自己的儿子有关,现在这个 DP 方程多了一个从父亲 fa 转移,我们考虑把他转换成正常形式。

fu=[u=S]+(u,v)Evtfvdegvfu=[u=S]+ffadegfa+vsonuvtkvfu+bvdegvfu=[u=S]+ffadegfa+fu×vsonuvtkvdegv+vsonuvtbvdegv(1vsonuvtkvdegv)fu=[u=S]+ffadegfa+vsonuvtbvdegvfu=1(1vsonuvtkvdegv)×degfa×ffa+1(1vsonuvtkvdegv)×([u=S]+vsonuvtbvdegv)

ku 为红色的部分,bu 为蓝色的部分,发现 k,b 都是正常的树形 DP 可求,接着 f 也变成正常的树形 DP 了,时间复杂度 O(nlogn),空间复杂度 O(n)

最近更新