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\) 所以并没有什么大问题。