Step1
模板理解:
1.背景:完成两个多项式的卷积
即:两多项式形如
∑
i
=
0
n
a
i
x
i
\sum_{i=0}^n a_{i}x^{i}
∑i=0naixi ,
∑
i
=
0
m
b
i
x
i
\sum_{i=0}^m b_{i}x^{i}
∑i=0mbixi 卷积后为
∑
i
=
0
n
+
m
(
c
i
=
∑
j
=
0
i
a
j
b
i
−
j
)
x
i
\sum_{i=0}^{n+m}( c_{i}=\sum_{j=0}^ia_{j}b_{i-j})x^{i}
∑i=0n+m(ci=∑j=0iajbi−j)xi
2.朴素算法: 系数对应相乘,复杂度 O ( n m ) O(nm) O(nm)
3.FFT优化:在 O ( K l o g K ) O(KlogK) O(KlogK)时间内得出 ∑ c i \sum c_{i} ∑ci ( K K K为第一个大于 n + m n+m n+m的二的幂次方)
3.1 FFT过程
3.1.1 点值表示一个多项式: 对于多项式
∑
i
=
0
n
a
i
x
i
\sum_{i=0}^n a_{i}x^{i}
∑i=0naixi,用
n
+
1
n+1
n+1个数对
(
x
i
,
y
i
)
(x_{i},y_{i})
(xi,yi)表示,
y
i
y_{i}
yi为
x
i
x_{i}
xi代入多项式后的值 。相反的,如果有
n
+
1
n+1
n+1个数对,可以还原出一个形如
∑
i
=
0
n
a
i
x
i
\sum_{i=0}^n a_{i}x^{i}
∑i=0naixi的多项式。
3.1.2 引入复数作为代入的值。根据
e
i
x
e^{ix}
eix的性质,可以实现用所有的
x
i
x_{i}
xi分治计算所有的
y
i
y_{i}
yi
具体过程:由于时间有限,今晚再补全。先参见cyk大佬的blog
Step2
例题练习(晚上才来填坑吧。。)
一、bzoj3527
二、bzoj3513