多项式基础
多项式基础
Lagrange 插值法
Lagrange 插值 I
给定
对
我们考虑构造
首先考虑如何满足第一个条件。不难想到只要把
然后考虑如何满足第二个条件。将
于是我们不难得到了
将
不难发现这个函数符合题意。于是就做完了。
题目要求的是代入一个点求值,可以直接在循环的时候算。
时间复杂度
Lagrange 插值 II
本题需要多项式基础。
做法 1:卷积
给定
朴素的
注意到本题给的点值很有特点(是
即
注意下面的
即
预处理后是可以
考虑分子。其显然等于
即
于是
暂时忽略前面的系数,注意到后面的式子有点像卷积的形式,考虑卷积。
考虑利用
不难发现当
即可。当
时间复杂度
做法 2:转下降幂
(下降幂的定义在后面)
我们有下降幂的二项式定理
假设我们已经得到了
考虑后面的式子如何用卷积求。
卷积的上界是
于是可以令
令
再令
我们可以愉快地做卷积了。
于是,我们
-
求出
的下降幂多项式 。 -
卷积求出平移后的系数。
-
将
转为普通多项式 。
关于如何将
一共要做三次多项式乘法,时间复杂度
下降幂多项式的特殊插值
也就是,给定
我们有一个性质:当
也就是说,
于是我们求出
FFT
板子,就不说了。
众所周知,多项式有两种表示,一种是最常用的系数表示,还有点值表示。点值表示的优点是可以非常快速地(
但是题目中给出的一般是多项式的系数表示,于是我们要将其转成点值表示。
两个次数为
如果随便选取
以下设
假设我们要选取
聪明如你肯定想到了。相反数。
如果
如果
但是多项式
注意到我们只需要算出左边和右边的两个函数
而我们设左边得到一个关于
即
也就是说,我们只要保证
递归之后我们得到了两个
如果仔细思考,就会发现一个致命的问题:我们要保证
显然在
我们举个例子吧。我们假设我们要求多项式
我们不妨设起初(第
于是我们会把
最后我们需要把
那么
最后我们不难得到
对于 NTT,我们注意到若
分治 FFT
给定序列
,求序列 。其中 ,边界为 。
Solution 1
朴素地做是
具体地
-
若
,结束递归。 -
递归求解
-
计算
对 的影响。 -
求解
。
观察到这是一个卷积的形式。于是我们令
时间复杂度
Solution 2
令
则
故
时间复杂度
任意模数多项式乘法(MTT)
Method 1:三模 NTT
由于
一般选取 __int128
)。
然而有一种不需要利用 __int128
的方法。
设
先合并前两个,那么
所以
故
于是我们求出了
不妨记
故
不过这个方法常数很大(需要做
Method 2:拆系数 FFT
我们设
于是设
设
于是我们需要:
-
对
, , 做 DFT -
对
, 做 IDFT
共五次 FFT。常数是三模 NTT 的一半左右。但是这种方法无法通过精心构造的数据。
多项式乘法逆
考虑倍增。假设我们求出了
由于
则
考虑到
则
我们有
任意模数多项式乘法逆
把 NTT 换成任意模数的即可。
多项式除法
给定
和 ,其中 。求出 满足 ,且 , 。
好玄学的做法。
将
即
定义
则
于是我们在
那么在
多项式对数函数
对
于是
时间复杂度
多项式 Newton 迭代
给定多项式
,若已知 满足 ,求出模 意义下的 。
考虑倍增。
边界是
设已经得到了模
对
那么就很好做了。上式可以化简成
于是不难解得
那么我们不妨再来回顾一下多项式求逆。
给定
,求出 ,使得 。
观察牛顿迭代的形式
给定多项式
,若已知 满足 ,求出模 意义下的 。
我们要让左边是一个多项式,右边是
即
那么令
注意
的主元是 。不妨令 ,则有 ,这里 当作常数,故 。
多项式 exp
给定
,求出 使得 。
考虑变换形式。上式即
故
应用 Newton 迭代的结论,我们得到
多项式开根
给定
,求出 使得 。
上式即
多项式快速幂
事实上,类似整数快速幂的实现可以做到
普通版
普通版保证了
加强版
首先我们设这个多项式的前
如果
否则设
我们把
最后乘上
注意,计算
P2767 树的数量
求出包含
两个有根树相同,当且仅当其根节点相同,且从左到右每一棵子树也相同。特别地,两个有根树均为空树,视为两个有根树相同。
套路地设
则
那么
CF438E The Child and Binary Tree
对于
定义二叉树的权值为节点的权值之和。给定大小为
两棵二叉树不同当且仅当:
- 它们的节点数量不同;
- 或树的形态不同;
- 或存在一个点的点权不同。
套路地设
特别地,
不妨设
那么
也就是说
解得
讨论正确性。
- 取
号的时候, 时 ; - 取
号的时候, 时 。
因此取
然后你发现
但是我们上下同时乘以
然后多项式求逆+开根即可。时间复杂度
P4389 付公主的背包
求
要求求出
不难想到取
我们有
代入就可以得到
于是问题转化为
需要注意的是,不能对于每一个
正确的做法是,求出
最后别忘了
将
P7431 [THUPC2017] 小 L 的计算题
给定非负整数数组
对于
写出 OGF。设
推到这一步,已经可以利用分治 NTT 维护分子和分母,做到
本文作者:Starrykiller
本文链接:https://www.cnblogs.com/Starrykiller/p/17963608/polynomial-basis
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下