题解 仙人掌计数

Posted dark-romance

tags:

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

题目传送门

题目大意

给出(q)个查询,每次查询(n)个点的仙人掌有多少个。

(qle 5 imes 10^4,nle 131072)

思路

因为这道题太难码了,所以先把题解写了再写代码(好奇怪啊)

我们设(c_n)(n)个点时的答案,我们对其构造指数型生成函数(C(x)):

[C(x)=sum_{i=0} c_ifrac{x^i}{i!} ]

我们考虑钦定一个根,然后连边,显然要么连出去一条边,要么连出去一个环。需要注意的是,连边相当于把根与一个仙人掌相连,连环的环其实是仙人掌连成一个环。

于是,我们可以得到转移式:

[C(x)=xexp (C(x)+frac{1}{2}sum_{i=2}^{infty} C^i(x)) ]

除以(2)是因为一个环无论正反都是一样,但是我们计算时却视作两种情况。

将上式用等比数列求和公式可以得到:

[C(x)=xexp(frac{2C(x)-C^2(x)}{2-2C(x)}) ]

我们发现我们如果构造

[F(C(x))=xexp(frac{2C(x)-C^2(x)}{2-2C(x)})-C(x) ]

我们即是要求导(F(C(x)))的根,对此,我们可以使用多项式牛顿迭代法。我们就需要求到(F(C(x)))的导:

[F^{‘}(C(x))=(xexp(frac{2C(x)-C^2(x)}{2-2C(x)})-C(x))^{‘} ]

[=xexp (frac{2C(x)-C^2(x)}{2-2C(x)})(frac{2C(x)-C^2(x)}{2-2C(x)})^{‘}-1 ]

[=xexp (frac{2C(x)-C^2(x)}{2-2C(x)})frac{C^2(x)-2C(x)+2}{2C^2(x)-4C(x)+2}-1 ]

于是,我们可以得到牛顿迭代法的式子:

[C(x)=C_0(x)-frac{F(C_0(x))}{F^{‘}(C_0(x))} ]

[=C_0(x)-frac{xexp(frac{2C_0(x)-C_0^2(x)}{2-2C_0(x)})-C(x)}{xexp (frac{2C_0(x)-C_0^2(x)}{2-2C_0(x)})frac{C_0^2(x)-2C_0(x)+2}{2C_0^2(x)-4C_0(x)+2}-1} ]

[=C_0(x)-frac{2xexp (frac{2C_0(x)-C_0^2(x)}{2-2C_0(x)})-2C_0(x)}{(1+frac{1}{(C_0(x)-1)^2})xexp (frac{2C_0(x)-C_0^2(x)}{2-2C_0(x)})-2} ]

我们发现如果我们设(G=xexp (frac{2C_0(x)-C_0^2(x)}{2-2C_0(x)})),那么式子就可以化为:

[C(x)=C_0(x)-frac{2G-2C_0(x)}{(1+frac{1}{(C_0(x)-1)^2})G-2} ]

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

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

题解ZJOI2017仙人掌

BZOJ1023:[SHOI2008]仙人掌图——题解

[题解] [ZJOI2017] 仙人掌

ZJOI2017仙人掌

SHOI2006仙人掌