「题解」CF1060F Shrinking Tree(神仙计数 DP)
困难的。
考虑对于每个点 \(i\),将它提至根,求所有操作方案的概率和。
考虑 \(i\) 现在已经和 \(u\) 点合并起来,但是还没有和 \(u\) 的子结点合并(下文称这种情况为 到达 \(u\))。
考察 \(u\) 的一个儿子 \(v\),我们仅考虑 \(v\) 的子树和 \((u,v)\) 边的方案数,且 \(i\) 到达 \(u\) 时 \(v\) 子树内还剩 \(j\) 条边,记为 \(f_{v,j+1}\);\(i\) 到达 \(u\) 时子树内还剩 \(j\) 条边,记为 \(g_{u,j}\)。
观察 \(f_{v,j}\) 的转移,有两种情况:
- \(i\) 先到达 \(u\),又和 \(v\) 合并:
- 此时方案数为 \(0.5\sum_{k=0}^{j-1}g_{v,k}\),即枚举 \(u,v\) 合并的时间。
- \(u\) 和 \(v\) 合并,\(i\) 又到达 \(u\):
- 此时方案数为 \((\text{siz}_v-j)g_{v,j}\),即枚举 \(u,v\) 合并的时间。
观察 \(g\) 的转移,即把所有子树的 \(f\) 缝合:
对于子树的 \(f\) 的操作,分为两种类型:\(i\) 到达 \(u\) 时 \(v\) 子树之前的、之后的操作边。
形象地,

(来自 @ywy_c_asm)
连续段是不会断开的。
\(f_{v,x}g_{u,y}\dbinom{x+y}{x}\dbinom{\text{siz}_v-x+\text{siz}_u-y-1}{\text{siz}_u-y-1}\to g_{u,x+y}\)。
使用树上背包的套路,时间复杂度 \(\mathcal{O}(n^4)\),前缀和优化 \(\mathcal{O}(n^3)\)。

浙公网安备 33010602011771号