码迷,mamicode.com
首页 > 其他好文 > 详细

Note - 多项式乱写

时间:2021-02-18 13:14:55      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:amp   技巧   sum   很多   一个   多项式   class   not   blank   

??大概是记录 @Tiw 的伟大智慧叭。

常系数齐次线性递推

??Link.

??求:一个满足 \(m\) 阶齐次线性递推数列 \(\{a\}\) 的第 \(n\) 项,即求

\[a_n=\sum_{i=1}^mf_ia_{n-i} \]


??不用多项式取模的做法。

??根据条件式子得到:

\[A(x)=F(x)A(x)+P(x) \]

??\(P(x)\) 某个多项式,用于修补低次项。

??变形:

\[\begin{aligned}A(x)&=F(x)A(x)+P(x)\\\Rightarrow~~~~A(x)&=\frac{P(x)}{Q(x)}~~~~\text{let } Q(x)=1-F(x)\\\Rightarrow~~~~A(x)&=\frac{P(x)Q(-x)}{Q(x)Q(-x)}\end{aligned} \]

??对于任意奇数 \(k\),考虑 \(Q(x)Q(-x)\)\(k\) 次项:

\[[x^k]Q(x)Q(-x)=\sum_{i=0}^k(-1)^iq_iq_{k-i} \]

??由于 \(2\not|k\),故 \((-1)^iq_iq_{k-i}+(-1)^{k-i}q_{k-i}q_i=0\),原式为 \(0\),即 \(Q(x)Q(-x)\) 仅含偶次项。不妨令 \(R(x^2)=Q(x)Q(-x)\),代入变形:

\[\begin{aligned}A(x)&=\frac{P(x)Q(-x)}{R(x^2)}\\\Rightarrow A(x)&=\frac{E(x^2)}{R(x^2)}+x\frac{O(x^2)}{R(x^2)}~~~~\text{let }\begin{cases}E(x)=\sum_i [x^{2i}]P(x)Q(-x)\cdot x^i\\O(x)=\sum_i [x^{2i+1}]P(x)Q(-x)\cdot x^i\end{cases}\end{aligned} \]

??我们要求的只是 \([x^n]A(x)\) 而非整个 \(A(x)\),所以只需要根据 \(n\) 的奇偶性递归到其中一边求解。复杂度仍然是 \(\mathcal O(m\log m\log n)\),不过常数会小很多。

??此算法基础上的更多卡常技巧请见 EI 的博客

Note - 多项式乱写

标签:amp   技巧   sum   很多   一个   多项式   class   not   blank   

原文地址:https://www.cnblogs.com/rainybunny/p/14406155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!