前言
这一篇博客是在之前学习FFT的博客之后的,所以,如果你还不会FFT,请先看多项式乘法(FFT),在这篇博客里我有良心的详细讲解
正文
题型一:模板题&类模板题
- 模板系列可以供你检测你写的FFT是否正确,
在很多OJ上都有 - 高精度系列,正式赛场上这样的毒瘤题不是很多,现在的考题一般都会给一个模数让你求,但是对于一些特殊的题可能还是会用到,所以可以练一练手(FFT可以优化高精度乘法,高精度乘法优化后可以优化部分其它操作)
题型二:纯卷积题
考虑一次多项式乘法
C
=
A
∗
B
C=A*B
C=A∗B,其本质是做一次普通的卷积
C
n
=
∑
i
=
1
n
A
i
B
n
−
i
C_n=\sum_{i=1}^nA_iB_{n-i}
Cn=i=1∑nAiBn−i
然后根据这个东西就能解决很多的问题
题型三:生成函数题
什么是生成函数?
g
(
x
)
=
∑
i
=
0
∞
f
(
i
)
∗
x
i
g(x)=\sum_{i=0}^{\infty}f(i)*x^i
g(x)=i=0∑∞f(i)∗xi
就是这样一个东西,看起来好像很难的样子,实际上也确实很难,对于一些各种各样的
f
(
i
)
f(i)
f(i)推式子都很麻烦,但当然也有简单的题目(另外有非FFT的生成函数题,可以自行学习,如BZOJ3028)
- 在一些数中求选的数和的可能性系列
BZOJ3771这一道题可以用容斥推一下式子,然后通过FFT来计算答案,方法就把指数当成价值
题型四:匹配相关
- 特殊匹配系列
BZOJ4503能匹配上代表0,把通配符视为0,求 ( A i − B j ) 2 ∗ A i ∗ B j (A_i-B_j)^2*A_i*B_j (Ai−Bj)2∗Ai∗Bj即可
常见模型:石头剪刀布(分别标值FFT)
题型五:结合其它数据结构或者思想
BZOJ4332推公式+倍增
总结
FFT本身作为考点能考的东西并不是特别多,主要是考验推式子的能力。由于我现在太菜,阅题不多,所以也不是很全,这篇博客将会持续更新