2次元FFT
http://jag2013spring.contest.atcoder.jp/tasks/icpc2013spring_f
を解いたので,2次元FFTのやり方.
1次元FFT
まずは,離散フーリエ変換を.
数列 f(0), f(1), …, f(N-1) に対するフーリエ変換は,
※の中の符号が逆だったりする事も有るけど問題無い.
逆フーリエ変換は,
F(0), F(1), …, F(N-1) をまとめて高速(O(NlogN))に求めることが出来る,というのが高速フーリエ変換(FFT)だった.これは省略.
2次元FFT
2次元FFTは,1次元FFTを利用する.
関数f(x, y) (0 <= x < M, 0 <= y < N)に対するフーリエ変換は,
逆フーリエ変換は,
フーリエ変換の式をいじると,
となる.これ即ち[・]の内側はFFT.