calc加强版

XXX.calc加强版

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

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

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

于是现在就有

\[\exp\Big(\sum\limits_{i=1}^m\ln(1+ix)\Big) \]

考虑\(\ln(1+ix)\)的泰勒展开,会发现它就等于\(\sum\limits_{j=1}^{\infty}\dfrac{(-1)^{j+1}i^j}{j}x^j\)

于是,\(\sum\limits_{i=1}^m\ln(1+ix)=\sum\limits_{i=1}^m\sum\limits_{j=1}^{\infty}\dfrac{(-1)^{j+1}i^j}{j}x^j=\sum\limits_{j=1}^{\infty}\dfrac{(-1)^{j+1}\sum\limits_{i=1}^mi^j}{j}x^j\)

假如我们知道\(\sum\limits_{i=1}^mi^j\),就可以直接\(O(n)\)地计算上式了;于是现在关键就在于计算此式。

我们考虑上式的EGF:\(\sum\limits_{i=0}^{\infty}\dfrac{\Big(\sum\limits_{j=1}^mj^i\Big)x^i}{i!}\)

交换枚举顺序,得到

\[\sum\limits_{j=1}^m\sum\limits_{i=0}^{\infty}\dfrac{(jx)^i}{i!} \]

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

\[\sum\limits_{j=1}^me^{jx} \]

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

\[\dfrac{e^{(m+1)x}-1}{e^x-1} \]

重新转回函数形式,得到

\[\dfrac{\sum\limits_{i=1}^{\infty}\dfrac{(m+1)^ix^i}{i!}}{\sum\limits_{i=1}^{\infty}\dfrac{1}{i!}x^i} \]

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

\[\dfrac{\sum\limits_{i=0}^{\infty}\dfrac{(m+1)^{i+1}x^i}{(i+1)!}}{\sum\limits_{i=0}^{\infty}\dfrac{1}{(i+1)!}x^i} \]

分母上多项式求逆一下,再和分子卷一起就得到了\(\sum\limits_{i=1}^mi^j\)的EGF;再乘上一个阶乘,最终就得到了原序列。

通过\(\sum\limits_{i=1}^mi^j\),我们就能求出\(\sum\limits_{i=1}^m\ln(1+ix)\),然后套上一个\(\exp\)就是原序列。

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

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

posted @ 2021-04-01 20:54  Troverld  阅读(47)  评论(0编辑  收藏  举报