P2624题解

Prufer 序列变形题。

简单的讲解一下 Prufer 序列:

  • 简介:一颗无根树,每次将度数为1的节点的父亲加入序列,并将其删除,最终得到一个长度为 \(n-2\) 的序列。

  • 将 Prufer 序列转化为无根树:每次取出序列中最前面的数,将一个在点集中且最小的数与其连边,最后将序列最靠前的数和刚刚在点集中取出的数在分别在序列和点集中删去。最后将剩下的两个未连边的点连边即可。

  • Prufer 序列性质:

  • 序列与无根树一一对应。

  • 度数为 \(d_i\) 的节点只会在序列中出现 \(d_i-1\) 次。

  • 生成 \(n\) 节点的完全图(树)有 \(n^{n-2}\) 种(Cayley 定理)。

  • 生成每一种树的方式有 \((n-1)!\) 种(Cayley 定理)。

  • 对于给定度数 \(d_{ 1-n}\)\(n\) 个节点,共有 $\frac{(n-2)!}{\prod_{i=1}^{n} (d_i-1)!} $ 种形成树的方式。

辅助做题结论:对于 \(n\) 个结点形成的树,$ {\textstyle \sum_{i=1}^{n}(d_i-1)}=n-2 $。


接下来看本题:

题目中提到有一些节点度数未知,所以我们可先从这些节点已知的情况下手。若有 \(x\) 个结点度数已知,根据上面提到的性质,会有 $\frac{(\textstyle \sum_{i=1}{x}(d_i-1))!}{\prod_{i=1} (d_i-1)!} $ 种情况。
同时,因为这 \(x\) 个节点是无序的,所以还要再乘上一个他们的组合数,即为 \(\frac{(\textstyle \sum_{i=1}^{x}(d_i-1))!}{\prod_{i=1}^{x} (d_i-1)!} \times C_{n-2}^{x}\)

接下来考虑度数未知的情况。

根据上面的性质可知:因为 Prufer 序列剩下的位置只有 \(n-2-\textstyle \sum_{i=1}^{x}(d_i-1)\) 个,所以根据性质可知共有 \((n-x)^{n-2-\textstyle \sum_{i=1}^{x}(d_i-1)}\) 种方案。

最终答案即为 \(\frac{(\textstyle \sum_{i=1}^{x}(d_i-1))!}{\prod_{i=1}^{x} (d_i-1)!} \times C_{n-2}^{x}\times (n-x)^{n-2-\textstyle \sum_{i=1}^{x}(d_i-1)}\)

不过这还没完,再解释一下为什么不先算未知度数的节点:

当然是因为不方便。因为这道题是利用 Prufer 序列的性质来算的,所以未知节点的方案不好直接表示(因为序列的总位置为 \(n-2\) 个,若不先把已知度数的节点所占位置数算出,未知度数的节点不好表示。)

posted @ 2023-06-06 18:16  Pwtking  阅读(16)  评论(0)    收藏  举报