某些比较难的题目用
当然,都是一些板子以及一些不用其他知识就能做出来的题。
推柿子能力,一些微积分,生成函数基础知识。
俗话说:万事开头难。
为了在以后的题目中不被卡常,你需要一个比较快的 FFT,NTT 和 MTT 实现。
后面也附了一些非模板题,这些题目只需要一些数学水平就可以做出。
Luogu P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
Luogu P3803 【模板】多项式乘法(FFT)
Luogu P4245 【模板】任意模数NTT
Luogu P3338 [ZJOI2014]力
Luogu P3723 [AH2017/HNOI2017]礼物
Luogu P5488 差分与前缀和
Luogu P5641 【CSGRound2】开拓者的卓识(真怀念 zhouwc 啊)
求逆是一个非常重要的板子,以后很多题目都需要用到。
当然,我们在这里说的“求逆”指的是乘法逆。
Luogu P4238 【模板】多项式乘法逆
Luogu P4239 任意模数多项式乘法逆
三个后面会用到的板子。
由于指数函数常数较大,你可能需要一个比较快的板子。
Luogu P4725 【模板】多项式对数函数(多项式 ln)
Luogu P4726 【模板】多项式指数函数(多项式 exp)
Luogu P5205 【模板】多项式开根
Luogu P5277 【模板】多项式开根(加强版)
题目开始慢慢套路化了……
在某些动态规划题目中常常可以将
n 转移到n+1 ,或是转移到2n ,并且这两个转移都可以通过 FFT 来维护。这个时候我们可以将 FFT 套上倍增以
O(n\log^2n) 的复杂度通过。
CF755G PolandBall and Many Other Balls(鰰给出了一个
分治 FFT 主要是用来求一些常规方法不好求的问题。
当然,某些分治 FFT 题可以用生成函数大法以
O(n\log n) 的复杂度通过。
Luogu P4721 【模板】分治 FFT
背包问题是最简单的一类生成函数问题,许多问题都可以建模成背包问题,并且可以使用一些技巧优化。
UVa12298 Super Poker
CF1251F Red-White Fence
这里会涉及到使用一些特殊的数来进行给定式子的运算或者组合计数问题。
两类斯特林数是两类常见的组合递推数列。
Luogu P5408 【模板】第一类斯特林数·行
Luogu P5409 【模板】第一类斯特林数·列
Luogu P5395 【模板】第二类斯特林数·行
Luogu P5396 【模板】第二类斯特林数·列
Luogu P4091 [HEOI2016/TJOI2016]求和(EI 给出了线性做法,建议有了一定水平再来食用)
CF960G Bandit Blues(
两类欧拉数是两类较常见的组合递推数列。
Luogu P5825 排列计数
贝尔数
B_n 的组合意义是将n 元素集划分成若干非空集合的方案数。
循环卷积的计算有些时候可以通过 FFT 的本质来优化。
Bluestein's Algorithm 主要通过把
ij 拆开的方法来解决循环卷积的问题,或者是加速单位根反演的计算。
常系数齐次线性递推有四种求法,你知道吗……?
Luogu P4723 【模板】常系数齐次线性递推
多点求值算是一个比较有用的板子了。
Luogu P5050 【模板】多项式多点求值
Luogu P5158 【模板】多项式快速插值
下降幂多项式相比普通多项式在有限微积分上拥有更多的优点,可以使用有限微积分配合以解决某些普通多项式看起来不太好解决的问题。
Luogu P5383 普通多项式转下降幂多项式
Luogu P5393 下降幂多项式转普通多项式
Luogu P5394 【模板】下降幂多项式乘法
跳出常规多项式的条条框框,用一个多项式的某些点值来代表整个多项式。这种点值序列的加减乘除运算都可以
O(n) 解决,然而麻烦的是平移操作。利用点值序列的加减乘除和平移我们可以解决很多问题
Luogu P5667 拉格朗日插值2