题意
给定 \(n\) 个点的带权无向完全图,点 \(i, j\) 之间的权值为 \(a_{i, j}\),权值是一个 \(1 \sim \frac{n(n-1)}{2}\) 的排列。
计数把原图划分成 \(k\) 个组的方案数,满足:
对于任意的 \((s, f), (x, y)\),其中 \(s, f, x\) 同组,\(y\) 与 \(x\) 不同组 (\(s \ne f, x \ne y\)),\(a_{s, f} < a_{x, y}\),即(对于每个组)组间边大于组内边。
输出一行 \(n\) 个数,对于 \(k \in [1, n]\) 求出答案,对 \(998244353\) 取模。
\(1 \le n \le 1500\)。
题解
要求组间边大于组内边,显然可以隔离每组,单独考虑性质。
不难发现一个连通块可以成为“组”的充要条件:若从小到大加入边,其成为团前,不与外界接触。
这个过程可以用 \(\operatorname{kruskal}\) 重构树实现。于是我们得到了可以成为“组”的所有连通块,个数当然是 \(O(n)\) 的。
答案要求将原图划分成 \(k\) 组,每组都可行的方案数。考虑重构树的特点,连通块与节点是一一对应的。选一个点就是选其对应的连通块。“划分”则等于没有叶子结点与根相连。
于是直接在重构树上做树形 \(\operatorname{dp}\) (树上背包?)即可。复杂度 \((n^2)\)。
标签:原图,连通,重构,题解,权值,CF1408G,组间 From: https://www.cnblogs.com/FishJokes/p/16985887.html