算法学习笔记(41): 朴素多项式算法

朴素多项式算法 - O(n2) 合集

我们并不需要 NTT,就算需要,也只是用来优化乘法。

多项式求逆

对于多项式 aixi 我们需要构造出一个多项式 bixi 使得:

{a0b0=1i=0kaibki=0k1

首先 b0 是好知道的,剩下的 i=0kaibki=0bk 那一项单独拆出来:

a0bk=i=1kaibki

如果我们已知 b[0,k),那么就可以通过上式推出 bk

同时,这可以利用半在线卷积优化到 O(nlog2n)

多项式 ln

考虑:

B(x)=lnA(x)B(x)=A(x)A(x)

那么我们只需要多项式求导和求逆和积分即可。

或者有另外一种简单的公式:

B(x)A(x)=A(x)(i=0n1(i+1)bi+1xi)(i=0naixi)=i=0n1(i+1)ai+1xi

[xn] 提出来:

(k+1)ak+1=i=0k(i+1)bi+1akikak=i=1kibiak+1i

bk 单独提出来:

ka1bk=kaki=1k1ibiak+1i

如果我们已知 b[1,k),那么就可以通过上式推出 bk

同样可以利用半在线卷积优化到 O(nlog2n)

多项式 exp

类似的考虑:

B(x)=eA(x)lnB(x)=A(x)B(x)B(x)=A(x)B(x)=A(x)B(x)

将系数提取出来:

(k+1)bk+1=i=0k(i+1)ai+1bki

将下标平移一下:

kbk=i=1kiaibki

如果我们已知 b[0,k),那么就可以通过上式推出 bk

同样可以利用半在线卷积优化到 O(nlog2n)Ctrl-C + Ctrl-V

半在线卷积

看了怎么久,来学学半在线卷积吧!

半在线卷积其实就是……多项乘法上的 cdq 分治!

没啥好说的,呱。

作者有话说

看看多项式板子有多长,比线粒体还长!用 O(n2) 代码短,不容易错,还不受模数的限制!

反正省选什么的也不会考 NTT,但是会考多项式,所以学一学总是好的。

posted @   jeefy  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示