LGP3328口胡

怎么这么多花里胡哨的题啊?(《关于这个傻比不想用矩阵快速幂干脆直接生成函数扒通项这件事》)

考虑令 \(b_i=a_{i-1}+1,c_i=a_{i+1}-1\),可以变成区间加减 \(b,c\),求 \(\sum F[b_i]\times F[c_i]\)

这个 \(F\) 可以直接上生成函数扒递推式:

\[F(x)=F(x)(x+ax^2)+b\sum_{i=2}x^i+1 \]

\[F(x)(1-x-ax^2)=\frac{bx^2+1-x}{1-x} \]

\[F(x)=\frac{1-x+bx^2}{(1-x)(1-x-ax^2)} \]

接下来就是直接扒通项。显然通项可以写成 \(\sum c_i\times x_i^n\)

\[\frac{1}{(1-x)(1-x-ax^2)} \]

\(\alpha=\frac{1+\sqrt{1+4a}}{2},\beta=\frac{1-\sqrt{1+4a}}{2}\),可以得到是:

\[\frac{-1}{(1-x)(\alpha-x)(\beta-x)} \]

为防止混淆下面的 \(A\) 为上面的 \(a\)

\(\frac{a}{\alpha-x}+\frac{b}{\beta-x}+\frac{c}{1-x}=\frac{-1}{(1-x)(\alpha-x)(\beta-x)}\),能够得到:

\[a(\beta-x)(1-x)+b(\alpha-x)(1-x)+c(A+x-x^2)=-1 \]

\[a\beta-(a+a\beta)x+ax^2+b\alpha-(b+b\alpha)x+bx^2+cA+cx-cx^2=-1 \]

列出方程:

\[\begin{cases} a\beta+b\alpha+cA=-1\\ -a(\beta+1)-b(\alpha+1)+c=0\\ a+b-c=0 \end{cases} \]

能够解得:

\[\begin{cases} a=\frac{\alpha}{A\sqrt{1+4a}}\\ b=\frac{-\beta}{A\sqrt{1+4a}}\\ c=\frac{-1}{A} \end{cases} \]

那么就有:

\[F(x)=(1-x+bx^2)(\frac{a}{\alpha-x}+\frac{b}{\beta-x}+\frac{c}{1-x}) \]

\[F(x)=(1-x+bx^2)(\frac{a\div\alpha}{1-\alpha^{-1}x}+\frac{b\div\beta}{1-\beta^{-1}x}+\frac{c}{1-x}) \]

\[F(x)=(1-x+bx^2)(\frac{1}{A\sqrt{1+4A}}\times(\frac{1}{1-\alpha^{-1}x}-\frac{1}{1-\beta^{-1}x})-\frac{A^{-1}}{1-x}) \]

\[F(x)=(1-x+bx^2)(\frac{1}{A\sqrt{1+4A}}\times(\frac{1}{1-\frac{-4A}{2(1-\sqrt{1+4A})}x}-\frac{1}{1-\frac{-4A}{2(1+\sqrt{1+4A})})})-\frac{A^{-1}}{1-x}) \]

有了这个我们就可以直接扩域然后写出 \([x^n]F(x)=\sum_{i=1}^{3}c_i\times x_i^n\) 了。

\(F[b_i]\times F[c_i]\) 写成 \(\sum_{i=1}^{9}c_i\times x_i^{b_i+c_i}\),这下子变成区间乘区间求和了。

复杂度 \(O(9\times 2^2\times Q\log n)\),但是 \(Q=10000\) 所以并没有什么大问题。

posted @ 2022-07-25 14:45  Prean  阅读(13)  评论(0编辑  收藏  举报
var canShowAdsense=function(){return !!0};