2024.2.6 闲话
拜谢国际特级大师 APJifengc,今一您扬向 .
歌:ワーニング!- タケノコ少年 feat. 初音ミク .
发现以前的闲话标题几乎全部写成 2023. 前缀的了,希望不要再这样了 .
也拜谢一波 Kaguya .
一直觉得分式分解比因式分解强就摆了,看到 APJ 的一些东西才发现一切的真相 .
分式分解问题:
有有理分式 \(\dfrac{P(z)}{Q(z)}\),想要部分分式分解 .
令 \(Q(z)=\prod_{i=1}^r(1-a_iz)^{k_i}\),则答案的形式肯定是:
其中 \(\deg R_i(z)<k_i\) .
令 \(q_i(z)=(1-a_iz)^{k_i}\)(注意此处 \(q_i\) 之间互质),则可以得到:
如果对 \(q_i(z)\) 取模则会发现:
那么即可导出:
这样就可以 \(\Theta(n\log n)\) 进行分式分解了 .
(我现在还不知道具体数学上的那个有理生成函数的一般展开定理有什么用)
有一些例子(免责声明:均为口胡):
求
\[[z^n]\dfrac1{\prod_{i=0}^m(1-(u+vi)z)} \]
其实这种没有重根的可以直接用不同根的有理展开定理状物,比较方便:
如果用前面得到的式子也是一样的:
给一个多重集,算任意取 \(m\) 个元素乘积的和 . 本质相同的组合只算一次 .
多重集最多 \(16\) 种元素 .
根据容斥可以发现只需要计算:
分治乘算出分母后 Bostan-Mori 提取即可
分式分解后就可以快速计算了,总复杂度 \(O(n^2+n2^n\log m)\)(因为要算 \(2^n\) 处).
\[F(k,n) = \left \{\begin{aligned}&r_0\ && k = 1\ \land\ n = 0 \\&r_1\ && k = 1\ \land\ n = 1 \\&0\ && k > 1 \ \land \ n < 0 \\&a \times F(k, n - 1) + b \times F(k, n - 2)\ && k = 1 \ \land\ n > 1 \\&t_k \times F(k, n - 1) + s^n \times F(k - 1, n)\ && \text{otherwise}\end{aligned}\right. \]求 \(F\) 的某处点值 .
我终于也能看懂这种东西了啊 .
首先考虑到有递推:
也就是:
(通过某些方式)仔细地展开即可得到:
分式分解之后根据前面的分析,任务只有两个:
- 计算 \(\dfrac{Q(z)}{q_i(z)}\bmod q_i(z)\);
- 求 \(\dfrac{Q(z)}{q_i(z)}\bmod q_i(z)\) 模 \(q_i(z)\) 意义下的逆;
前者可以简单分治乘完成 . 后者因为前面的分析只需要做代换 \(t=1-a_iz\),那么就变为计算 \(1-t\) 处的值 . 注意到这样模数就变成 \(t^{k_i}\) 了,这是相对容易计算的 .
总之怎么说也可以在线性对数的时间复杂度内完成分式分解,那么问题就被解决了 .
Reference:
- Private conversation with Implicit .
- 一个小计数问题 - Cry_For_theMoon .
- 分式分解,给小朋友们做现场的表演 - Elegia .
- 《具体数学》 - Ronald L. Graham, Donald E. Knuth, Oren Patashnik .
- 浅谈多项式与生成函数 - joke3579 .
- 营业日志 2020.5.20 - Elegia .
- 2024.1 训练纪要 - APJifengc .
- 核战避难所吧 - 百度贴吧 .
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/18009754
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ