calc加强版

XXX.calc加强版

没错,这题还有个加强版,要从多项式角度考虑了。

首先,很容易就能想到,单个数a的生成函数即为1+ax,而我们要求的就是i=1m(1+ix)这个多项式的前n项的系数。

我们在之前XV.付公主的背包中也碰见过类似的形式。于是我们可以直接套上一个ln就能把它转成和的形式。

于是现在就有

exp(i=1mln(1+ix))

考虑ln(1+ix)的泰勒展开,会发现它就等于j=1(1)j+1ijjxj

于是,i=1mln(1+ix)=i=1mj=1(1)j+1ijjxj=j=1(1)j+1i=1mijjxj

假如我们知道i=1mij,就可以直接O(n)地计算上式了;于是现在关键就在于计算此式。

我们考虑上式的EGF:i=0(j=1mji)xii!

交换枚举顺序,得到

j=1mi=0(jx)ii!

将它重新转回EGF形式,得到

j=1mejx

然后套上等比数列求和公式,最终就得到

e(m+1)x1ex1

重新转回函数形式,得到

i=1(m+1)ixii!i=11i!xi

因为分子分母都没有常数项,故我们直接把常数项约掉,就得到

i=0(m+1)i+1xi(i+1)!i=01(i+1)!xi

分母上多项式求逆一下,再和分子卷一起就得到了i=1mij的EGF;再乘上一个阶乘,最终就得到了原序列。

通过i=1mij,我们就能求出i=1mln(1+ix),然后套上一个exp就是原序列。

时间复杂度O(nlogn)。常数极大,卡了好久才卡过。

AC记录(因为不确定性极强,不保证再次提交仍可通过)

posted @   Troverld  阅读(48)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示