多项式平移|连续点值平移
多项式平移
多项式平移是简单情况的多项式复合变换,给出
分治法
令
那么
其中
Taylor 公式法
对
那么
观察到对于
令
那么
二项式定理法
考虑二项式定理
得到的结果与上述方法相同。
连续点值平移
例题 LOJ 166 拉格朗日插值 2
给出度数小于等于
Lagrange 插值公式法
考虑 Lagrange 插值公式
上式虽然是卷积形式但不能保证分母上
那么对于
实现中取
对问题稍加修改,假设对于某个
Lagrange 插值公式也给出了通过维护一些前后缀积的线性计算单个点值的方法。
应用
同一行第一类无符号 Stirling 数
例题 P5408 第一类斯特林数·行
在模素数
考虑
其中
通过多项式平移可在
模素数意义下阶乘
例题 P5282【模板】快速阶乘算法
求
令
其中
多项式多点求值
连续点值平移
令
所以只需
由
额外增加的一个点值使用线性时间的算法即可。那么在开始时维护
而我们只需要约
模素数意义下二项式系数前缀和
例题 LOJ 6386 组合数前缀和
求
考虑使用矩阵描述
类似的可以将二项式系数前缀和的递推描述为
注意矩阵乘法的顺序,那么
令
的点值
且矩阵右下角元素恰为我们在阶乘算法中所维护的,那么
可在
模素数意义下调和数
例题 P5702 调和级数求和
求
记
那么
在这里
整式递推
对于更一般的情况,类似于上述快速阶乘算法的案例,我们期望得到一个怎么样的算法?
例题 P6115【模板】整式递推
现有数列
给定所有
为了更系统地描述上述几道例题中构造矩阵的过程,我们引入
为了实现整式递推,我们应当注意到快速阶乘算法过程中,我们维护的点值其实并不是
由于整式递推阶数
容易发现,对于一般的整式递推远处系数求值问题,我们可以构造
设
我们先撇开前面的
容易发现
于是我们维护出
具体地,为了让
- 在
时间内获取 , , , , , 。 - 在
时间内获取 , , , , , 。 - 在
时间内获取 , , , , , 。 - 计算
。
我们每轮花费
最后,我们只用做到
之前的
这样,我们预处理的复杂度即为
考虑查询,我们只用
容易发现这部分计算并不是复杂度瓶颈。
因此,该算法的总复杂度为
编码时,我们可以使用循环卷积的技巧来减小 NTT 的常数。
在实际应用时,我们往往是对一个已知的微分有限的 GF 提取其远处系数,从而
参考文献
- Alin Bostan, Pierrick Gaudry, and Eric Schost. Linear recurrences with polynomial coefficients and application to integer factorization and Cartier–Manin operator.
- Min_25 的博客
- ZZQ 的博客 - 阶乘模大质数
本页面最近更新:2023/6/27 13:39:08,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:hly1204, Enter-tainer, myeeye, Tiphereth-A
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用