【MX-X3-T6】「RiOI-4」TECHNOPOLIS 2085

【MX-X3-T6】「RiOI-4」TECHNOPOLIS 2085

首先考虑对 \(T\) 的给定点集 \(S\) 建立虚树,假设虚树的点数为 \(k\),根为 \(r\)。

接下来我们先假定 \(T'\) 的根也是 \(r\),考虑如何计算方案数。

首先虚树对应的 \(k\) 个点包括形态都是不会变的,考虑剩余的 \(n-k\) 个点。

剩余的所有点有两种类型,在虚树上或不在虚树上。

枚举在虚树上的点个数,令其为 \(x\),考虑计算对应的贡献。

可以发现,虚树初始时有 \(k-1\) 条边,接下来钦定填入点的顺序。

第一个点有 \(k-1\) 种填法,填入后会将一条边拆成两条。

第二个点有 \(k\) 种填法,填入后仍然会将一条边拆成两条。

以此类推,第 \(x\) 个点有 \(k+x-2\) 种填法,故总共的填法为 \((k+x-2)^{\underline{x}}\)。

接下来我们要从 \(n-k\) 个点里选出 \(x\) 个,方案数为 \(\dbinom{n-k}{x}\)。

接下来剩余 \(n-k-x\) 个点,要连接到大小为 \(k+x\) 的树上。

由经典结论,答案为 \((k+x) \times n^{n-k-x-1}\)。

我们将其乘起来,就可以得到点的个数为 \(x\) 对应的答案。

也就是说,我们可以 \(O(n)\) 求出虚树根钦定的情况。

接下来我们对于剩余的 \(n - k\) 个点,也有可能成为虚树根,按照上面方法求出即可。

时间复杂度 \(O(n \log n)\)。

posted @ 2026-03-25 11:52  Oken喵~  阅读(27)  评论(0)    收藏  举报