码迷,mamicode.com
首页 > 其他好文 > 详细

题解 仙人掌计数

时间:2020-07-13 13:22:34      阅读:44      评论:0      收藏:0      [点我收藏+]

标签:tps   求和   display   http   ref   传送门   计算   注意   2-2   

题目传送门

题目大意

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

\(q\le 5\times 10^4,n\le 131072\)

思路

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

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

\[C(x)=\sum_{i=0} c_i\frac{x^i}{i!} \]

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

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

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

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

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

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

我们发现我们如果构造

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

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

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

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

\[=x\exp (\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{x\exp(\frac{2C_0(x)-C_0^2(x)}{2-2C_0(x)})-C(x)}{x\exp (\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{2x\exp (\frac{2C_0(x)-C_0^2(x)}{2-2C_0(x)})-2C_0(x)}{(1+\frac{1}{(C_0(x)-1)^2})x\exp (\frac{2C_0(x)-C_0^2(x)}{2-2C_0(x)})-2} \]

我们发现如果我们设\(G=x\exp (\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} \]

题解 仙人掌计数

标签:tps   求和   display   http   ref   传送门   计算   注意   2-2   

原文地址:https://www.cnblogs.com/Dark-Romance/p/13292609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!