LOJ6386题解
作者:互联网
对于 \(\sum_{i=0}^{n}f(i)\) 的这种问题但是 \(f(i)\) 不是多项式函数且 \(n\) 很大时可以考虑一个用矩阵做的 DP:
\[\begin{bmatrix}\binom{n}{m}\\\sum_{i=0}^{m}\binom{n}{i}\end{bmatrix}=\begin{bmatrix}\frac{n-m+1}{m}&0\\\frac{n-m+1}{m}&1\end{bmatrix}\begin{bmatrix}\binom{n}{m-1}\\\sum_{i=0}^{m-1}\binom{n}{i}\end{bmatrix} \]考虑这个矩阵的乘法:
\[\begin{bmatrix}a_1&0\\a_2&1\end{bmatrix}\begin{bmatrix}b_1&0\\b_2&1\end{bmatrix}=\begin{bmatrix}a_1b_1&0\\a_2b_1+b_2&1\end{bmatrix} \]我们设这个矩阵是:
\[\begin{bmatrix}\frac{G(x)}{F(x)}&0\\\frac{H(x)}{F(x)}&1\end{bmatrix} \]那么上述矩阵运算可以被改写为:
\[F_3(x)=F_1(x)F_2(x) \]\[G_3(x)=G_1(x)G_2(x) \]\[H_3(x)=G_1(x)H_2(x)+H_1(x)F_2(x) \]为什么和上面是反的是因为这个矩阵乘法是左乘。
使用类似 快速阶乘算法 和 快速调和级数求和 那样的倍增就好了。。。复杂度 \(O(\sqrt{n}\log n)\),常数可能有亿点大。
标签:begin,frac,题解,矩阵,bmatrix,end,binom,LOJ6386 来源: https://www.cnblogs.com/lmpp/p/16433334.html