cf1060f
将求答案的点作为树根,总方案数是 \((n-1)!2^{n-1}\)。固定删除顺序时,按照时间从小到大加边,如果加边后这个连通块不含根,那么贡献为 \(2\),否则必须将方向指向根。总贡献即 \(2^c\)。考虑含根连通块拓展的过程,拼上一个新的大小为 \(k\) 的连通块,内部有 \(k-1\) 次合并边的操作。假设已有长度为 \(s\),那么在新的 \(s+k-1\) 的序列(不含本次合并)中这 \(k-1\) 次可以任选位置以及顺序,贡献为 \(\binom{s+k-1}{s}(k-1)!2^{k-1}\)。
拓展过程是从上往下的,但是计数肯定是从下往上。上述过程中将边分为了黑边或者白边,黑边即 \(1\) 连通块拓展所用到的边。考虑先将边黑白染色,然后计数排列数量。根连出去的边一定都是黑边。白边对应的时间 \(<\) 上面第一个黑边的时间。形成祖先关系的黑边,上面 \(<\) 下面。
考虑一张重构图,黑点视作方点,根据原树祖先关系,方点之间形成外向树。白边对应圆点,全部向方点连边。那么一个方点挂了一个内向菊花。\(p\) 的个数就是这个重构图的拓扑序数。子树合并就是在构建方点的重构树,因此状态形如 \(f_{u,i}\) 表示 \(u\) 子树,把已有黑边去掉之后前面还有 \(i\) 条边没有被放进去(包含子树中的白边),剩余 \(\text{size}_u-i\) 条边的贡献(顺序,\(2^c\))总和。子树合并时做背包,并且将已有部分的决策用组合数合并。上传时再考虑 \((u,fa_u)\) 是否是黑边,如果是的话就把白点结算了扔到最前面再归并一下。
树上背包是 \(n^2\),结合外层枚举根,总时间复杂度 \(\mathcal O(n^3)\)。
posted on 2026-01-16 08:58 nullptr_qwq 阅读(4) 评论(0) 收藏 举报
浙公网安备 33010602011771号