FFT是干什么的
FFT在算法竞赛中就有一个用途:加速多项式乘法(暴言)
简单来说,形如 a0X0+a1X1+a2X2+⋯+anXna0X0+a1X1+a2X2+⋯+anXn 的代数表达式叫做多项式,可以记作f(X)=a0X0+a1X1+a2X2+⋯+anXnf(X)=a0X0+a1X1+a2X2+⋯+anXn,其中a0,a1,⋯,ana0,a1,⋯,an叫做多项式的系数,XX是一个不定元(就是不可以合并),不表示任何值,不定元在多项式中最大项的次数称作多项式的次数
如果我们当前有两个多项式f(X),g(X)f(X),g(X),现在要把他们乘起来(求卷积),最朴素的做法就是
∑i=02n−1(∑j=0iai∗bi−j)∗xi∑i=02n−1(∑j=0iai∗bi−j)∗xi
这样的复杂度是Θ(n2)Θ(n2)的,十分不美观,FFT就是要将这个过程优化为Θ(nlogn)