虽然只是初涉多项式,但基本的总结还是要有滴。

概念

在我看来,多项式就是一个形如$f[x]=a_0+a_1x+a_2x^2+...+a_nx^n$的东东。

其中,x是一个“相关量”,也就是说平时我们讨论f[x]=巴拉巴拉时都是将$x^i$忽略不计的,一般来说多项式的+-*/都是对多项式的系数而言,至于$x^i$本身,更多的是一个代表的意思,代表“我是第几等级的”。

分类

多项式+-*/

(DFT)FFT,NTT,分治FFT,多项式全家桶,FWT

我学的暂时就是这些了。

应用

一般是多项式优化一些简单dp,或者用多项式结合上一些数学相关(二项式反演,斯特林数,prufer等)

习题

A. 多项式乘法

直接上FFT,NTT即可。

FFT可以三次变两次。

B. 2194: 快速傅立叶之二

试计算$C[k]=\sum(a[i]*b[i-k])$

好像是一道板子题吧,但刚学的我颓了题解+代码。

实际上只需要把b数组反转一下就办成了$C[k]=\sum(a[i]*b[n-i+k])$

最后ans[k]就是FFT后的c[n+k]咯

C. 力

刚学FFT,这题也肝了我3h(+颓代码+颓题解)

我们发现qi可以除掉(既然这样为啥要加上啊喂,搞得我以为qi是关键呢)

一个是加法部分一个是减法部分不好搞,我们可以尝试着分成两次计算。

不妨设g[x]=1/$x^2$,那么第一部分f[i]=f[j]*g[i-j](1<=j<i),似乎就是卷积了hhh

后面也是一样滴,f[i]'=f[j]*g[j-i](i<j<=n),似乎把g反转一下又成卷积了hhh

sky*嘲笑我前三道题都颓了题解+代码(话说第一题没有题解吧啊喂)

D. 3451: Tyvj1953 Normal

E. 3771: Triple

贡献分成一个斧头,两个斧头,三个斧头的贡献。

简单加减,考虑重复(不合法)即可,可以把两个多个斧头的情况看作卷积相乘,$x^i$代表这个方案的权值,系数$a_i$代表方案数

F. 3160: 万径人踪灭

考虑答案就是所有的对称方案-连续的回文的方案。

考虑a和b在一起时不好考虑,那就单独考虑a,单独考虑b好了,以单独考虑a为例,把所有有a的地方都置成1,其他的置成0,然后跑FFT,方案就是在$x^i$的位置,这两个a的对称轴就是i/2的位置,方案为$\sum2^{每个位置为中心的a和b对数}$

再减去所有的回文就好了。

G. 序列统计

选N个物品就相当于把序列自乘N次,用倍增实现。

不同的是这道题以乘积作为方案数而不是类似$x^i$中指数的加减,不符合卷积的形式。

观察到m必定是个质数,那么就一定存在原根了,把每个数转化成$G^i$的i,然后就珂以用卷积了,记得在卷积时长度是$\phi(p)-1$。

因为用的是原根,就会造成用两个

12-24 15:00