ZJOI2017仙人掌

Posted shxnb666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZJOI2017仙人掌相关的知识,希望对你有一定的参考价值。

题面

https://www.luogu.org/problem/P3687

题解

如果原图不是仙人掌(在这里,我们认为一棵树也是一个仙人掌),则无解,输出$0$。

如果原图是一个仙人掌,加的边是不能跨越仙人掌上的环边的(若跨越,则仙人掌上的环边被$2$个环所有,不是仙人掌),所以我们直接把环边断掉,变成一个森林,直接统计每棵树的答案,最后乘法原理乘起来就可以了。

首先,很自然的想到,令$F[i]$表示$i$节点的子树及它的父边形成一个仙人掌的方案数(父边可选可不选),这个状态不同寻常,一般我们的状态都是不带父边的。但是这道题不一样,稍微分析一下就可以得到这个状态。(这个应该不是难点吧)

如果是按寻常的方法转移,这个状态是有问题的,因为要考虑儿子之间可能还有边,我的解决方法是分父边一定被覆盖和父边一定没有被覆盖两个状态讨论,这样只能做到$O(\sumdeg^2)$。

题解很神奇,先预处理出一个数组$h[i]$,表示有$i$个点,他们之间互相匹配的方案数,显然,分$i$不配对还是和别人配对,有$h[i]=h[i-1]+(i-1)h[i-2]$(吐槽:我觉得这个数组只是处理出了特殊情况,如果一个点$x$,对于它的每个儿子$y$都有$f[y]=1$,是可以这么转移的,但是$f[y]$可以是任意值,就假了啊),然后是一个神奇的结论(特殊情况得到一般结论?)有$$f[x]=\prod_(x,y) \in Ef[y] \times g[deg[x]]$$,看了题解之后,我的脑子里也预想过这个结论,但是不会证明(大概是乘法原理对应每一种情况吧),不管了,既然结论这么好记,我就记下了行吧。

 

以上是关于ZJOI2017仙人掌的主要内容,如果未能解决你的问题,请参考以下文章

[BZOJ4784][ZJOI2017]仙人掌(树形DP)

ZJOI2017 仙人掌

做题ZJOI2017仙人掌——组合计数

ZJOI2017 仙人掌

题解ZJOI2017仙人掌

[ZJOI2017]仙人掌