NOI2020 命运
考场上挂分的题。。。
题目链接
由于 \(u_i,v_i\) 满足祖先关系,所以在 \(v_i\) 处记 \(d_x\) 表示 \(x\) 往上的最大深度。
设 \(f_{u,x}\) 表示以 \(u\) 为根的子树,当前没有被满足的链的深度最大值是 \(x\) 的方案数,那么转移有:
- 边被割去,直接转移,整体乘以 \(y\)
- 边未被割去,那么转移有两个。
于是得到:
\[f_{u,x}=(\sum f_{v,k}[k\le x]+(\sum f_{v,k}))\times f_{u,x}+(\sum f_{u,k}[k<x])\times f_{v,x}
\]
答案是 \(f_{1,0}\)
用线段树合并维护 \(f\) 数组,每个区间维护其和,暴力合并至底部,沿途维护 dp 值即可。
复杂度为 \(\mathcal O(n\log n)\)