P11363 做题记录

P11363 做题记录

题目链接来源

一句话题意:没法一句话,见题面

从简单情况入手考虑这道题。记点 \(i\) 的度为 \(\text{deg}_i\)​。

定义 I 一个点拥有大于等于三个相邻边为分叉结构,拥有小于等于两个相邻边为链结构,把分叉结构和链结构统称为分结构。

\(k = 1\) 时,你会发现只需要对同一点的边全排列即可。注意到如果你通过边 \(u\) 走到该点,\(u\) 是不能动的,于是这一点的方案数就为 \((\text{deg}_i -1)!\)。将所有点的方案数相乘即可。同时还可以发现这些相邻边在生成树上构成了一条链。

命题 I 一个点出发生成的树的个数是 \(\prod (\text{deg}_i-1)!\)

命题 I-a 与同一点相接的边在生成树上构成了一条链。

考虑 \(k=2\) 的情况。这个时候我们要考虑去重。考虑每个分结构的情况,发现如果两个起始边生成了同一棵树,那么遍历顺序中的每个点的分结构,它生成的链开头和结尾固定。只有从指定的边走过来,它才能构成同一棵树。此时,这个点的方案数就变成了 \((\text{deg}_i -2)!\)

命题 II 若两条起始边生成同一棵树,那么它们遍历顺序中的每个点分结构生成的链,开头和结尾固定。遍历顺序中的点的方案数为 \((\text{deg}_i -2)!\)

考虑 \(k \ge 3\) 的情况。如果大于等于三条起始边生成同一棵树,那么它们遍历顺序的每个点都只能是链结构,不能是分叉结构。当为分叉结构时我们钦定了大于等于三个开头和结尾,这是不切实的。

命题 II-a 若大于等于三条起始边生成同一棵树,它们的遍历顺序的每个点都只能是链结构,即这大于等于三条边在原树中在同一条链上。

总结一下两种情况。我们发现,若大于等于两条边生成同一棵树,那么这些边都在同一条、唯一一条链上(两条边显然在同一条链上)。而且,链上的每个点的方案为 \((\text{deg}_i-2)!\)(根据命题 II)。

命题 II-b 若大于等于两条边生成同一棵树,那么这些边都在同一条、唯一一条链上。在链上的每个点方案为 \((\text{deg}_i-2)!\),其余为 \((\text{deg}_i-1)!\)​。

定义 II 定义一个边集的生成链为所在的同一条、唯一一条链(如果存在)。

定义 III 定义 \(F_S=\bigcap \limits _{t\in S} A_t\)

考虑容斥。根据容斥原理,答案为:

\[\sum\limits_{S\subseteq \{1,2,3,\ldots,n-1\}} (-1)^{\left|S\right|-1}F_S \]

接下来我们就可以分析一下 \(F_{S}\)。由于 \((\text{deg}_i-2)!=\dfrac{(\text{deg}_i-1)!}{\text{deg}_i-1}\)。那么 \(F_S\) 就可以表示为:

\[F_S=\prod (\text{deg}_i-1)! \cdot \prod_{x \in S 的生成链点集} \dfrac{1}{\text{deg}_x-1} \]

结合 \(F_S\) 的式子和答案式子,可以定义:

定义 IV 定义 \(G_S\) 为:

\[G_S = (-1)^{\left|S\right|-1}\prod_{x \in S 的生成链点集} \dfrac{1}{\text{deg}_x-1} \]

定义 V 定义答案为:

\[\prod (\text{deg}_i-1)!\cdot\sum\limits_{S\subseteq \{1,2,3,\ldots,n-1\}} G_s \]

发现边集的性质较少,情况数多。而生成链的情况数少,性质也多。于是我们考虑依照生成链进行统计。

由于两条边才能构成一条生成链,因此我们修改一下定义 V 的式子为:

\[m\prod (\text{deg}_i-1)!-\prod (\text{deg}_i-1)!\sum\limits_{S\subseteq \{1,2,3,\ldots,n-1\},\left|S\right|\ge2} G_S \]

根据修改后的答案式子,我们定义:

定义 VI 定义一个生成链的权值为:

\[(-1)^t\prod_{x\in V}\dfrac{1}{\text{deg}_x-1} \]

其中 \(t\) 代表生成链为这个生成链的边集的大小之和。

定义 VII 定义 \(f_i\) 表示以 \(i\)\(i\) 的父亲为深度最小点,以 \(i\)​ 为根的子树内的点为深度最深的点的链的的生成链,的权值之和。

根据定义 VII 可以写出下列表达式:

\[f_u=\begin{cases}(-1)\sum\limits_{v\in S_u}f_v+\sum\limits_{v\in S_u}f_v+(-1)=-1&(u,fa_u)是起始边\\\\\dfrac{1}{\text{deg}_u}\sum\limits_{v\in S_u}f_v&否则\end{cases} \]

最后,在统计答案时,将所有链拼起来即可。

注意统计不拼起来的情况,即单条链的情况,可以发现,当 \((u,fa_u)\) 为起始边时,接上 \(v\) 的单条链只需要乘上 \(-1\) 即可。

未尽事宜请详询代码。

On 2025.1.22

posted @ 2025-03-13 20:32  邻补角-SSA  阅读(18)  评论(0)    收藏  举报