多项式练习笔记
蒟蒻初学多项式,主要参照卡老师洛谷题单,模板题就不放了
[ZJOI2014]力
比较常规的一个多项式套路,注意到二者下标差为定值,翻转其中一个多项式就可以转化为求卷积了
关于正负的处理可以将一个多项式复制一份,翻转后取相反数接在元多项式后
[AH2017/HNOI2017]礼物
注意到\(m\)很小,可以保留枚举增加的非负整数\(c\),于是问题只剩下了旋转
二者同时旋转显然没有意义,我们强制只旋转\(2\)号串
设旋转了\(t\)位,写出答案表达式
做法就显然和上题一样了
用多项式处理旋转匹配的思路好像很nb,又好像比较常规
CF755G PolandBall and Many Other Balls
差分与前缀和
手摸两组数据发先现与组合数有关
设答案为\(f\),对于前缀和
对于差分
很显然是个卷积,还有一个问题,\(k\)的范围极大,导致C的计算比较复杂,不能用常规的阶乘和逆元求出
但是对于\(C\)的通项公式,我们可以通过递推的到同一行的\(C\),这样\(k\)的贡献等同于\(k%10045358091004535809\)
计算就比较方便了
【CSGRound2】开拓者的卓识
对于\(sum_{k,l,r}\) ,\(A_i(l \leq i\leq r)\) 的贡献次数为 \(C_{i-l+k-1}^{k-1}*C_{r-i+k-1}^{k-1}\)
可以将其理解为\(A_i\)所贡献的区间每次可以向左(右)拓展k次,每次拓展任意非负整数长度,要求拓展k次后共拓展了i-l(r-i)长
这显然是个求非负整数接的问题,就可以用组合数带出上面的式子,注意左右是分别独立的
就可以得到
然后又是NTT的板子题了
CF755G PolandBall and Many Other Balls
对于朴素的DP,设 \(dp_{i,j}\) 为前\(i\)个数已经取了\(j\)组的方案数
显然有转移方程:
显然其生成函数为
于是就有:
然后就可以对于转移矩阵快速幂实现快速转移了,但这个做法有一定的局限性,比如下一道题
CF623E Transforming Sequence
首先,对于这道题每一位是等价的,每一位仅有已出现与未出现之分
还有一个非常基本的结论,\(n>k\)时无解
还是先考虑暴力的DP,设\(dp_{i,j}\)为前\(i\)个数,已经有\(j\)为出现了\(1\)
于是就有转移方程:
同理的
对于\(i==j\)的情况即可得到倍增的转移方程,同时右侧是个卷积,用MTT做即可
CF773F Test Data Generation
首先进行奇偶分析,发现a序列必然全是偶数,且\(a_n/g\)必为奇数,\(n\)也必为奇数
由于\(a_n/g\)为奇数,不妨枚举\(g\)中2因子的个数,
于是问题转化为:在\([1,\frac {max_a}{2^i}]\)中取一个长度为奇数单调递增的序列,且最后一位是奇数
设\(dp_{i,j}\)表示取了\(i\)个数,最大值为\(j\)的方案数(这个状态定义仅锁定了右侧的边界,不会记重)
然后又转移方程:
但是复杂度显然还是太大了,考虑优化
两位都具有卷积的性质,但第二维太大了,显然无法用多项式维护
所以优化方案基本出来了,第一维卷积,第二维倍增
为了方便统计答案,还需将dp数组的定义修改,为"最大值不超过\(j\)",同时还需多记录一维表示最大值为奇还是偶(1/0)
设新的\(DP\)数组为\(f\),可以容易的得到4条新的类似dp数组的转移方程(有点难敲)
若是正常来写记重是显然的,但是在倍增的意义下,不会记重
最后还有个trick,对于每个g的计算,下一个g都近似于当前g的两倍,可以在倍增的过程中记录答案,做法就少了一个log
【模板】分治 FFT
多项式求逆的做法很棒
CF553E Kyoya and Train
首先有一个比较朴素的\(O(nmt^2)\)的做法,由于时间这一维的存在导致图实际上是一个点数\(n*t\),边数\(m*t\)的DAG,可以DP
设第\(i\)个点关于时间的\(OGF\)(不太懂怎么表达,就是\(k\)次项的系数表示在\(k\)时间到达\(i\)的最小花费)为\(F_i(x)\)
可以发现一条边所代表的转移方程实际上是个卷积,但是在计算\(k\)次项系数需要知道所有点比\([0,k-1]\)的所有系数
于是使用分治FFT即可,时间复杂度\(O(mtlog^2t)\)
CF848E Days of Floral Colours
首先考虑朴素DP,发现由于有距离为2的点对导致dp好像并不满足无后效性原则
但是由于距离仅为2,不存在一直由距离为2的点对交错下去的情况,所以只要暴力考虑最后四个点的情况即可
同时因为完全对称,我们可以仅dp半环,因为各个颜色等价,我们尽在最后考虑选取的颜色
设\(f_{i,j}\)表示前i个点用了j种颜色的方案数,对是否含相对(距离为n)的点对判断只需要比较i与j/2的关系
还有一个辅助数组\(g_{i}\)表示i个点中,不含相对点的方案数
转移方程:
改变一下循环变量的意义,上述第2式可以写为:
可以分两步分治NTT卷起来
UVA12298 Super Poker II
直接构造生成函数暴力NTT

浙公网安备 33010602011771号