蒟蒻的fft學習筆記in
對於一般的,我們將兩個多項式相乘,都是開兩個虛數陣列,a,b
a,ba,
b,先將每個多項式的每個係數分別存入兩個陣列的實部,然後先將a
aa做fft變換,再將b
bb做fft變換,然後兩個點值表示式相乘,然後再將其fft
fftff
t變換回來,最後答案就是陣列的實部。
這樣是做了3次nlo
gn
nlogn
nlog
n的fft變換。
但是有乙個小技巧,我們對於兩個多項式,其實只用開乙個虛數陣列,將第乙個多項式 的係數存入這個陣列的實部,將第二個多項式的係數存入這個陣列的虛部,然後先對其進行fft變換,然後自己乘自己後再逆變換回來,虛部除以2n2n
2n便是最後的答案。
此時,我們可以發現,只做了2次nlo
gn
nlogn
nlog
n的fft變換。
目前看了看這篇部落格,裡面講了原理,寫的還不錯,貼個鏈結orz。
上份**:
模板
luogu fft 模板題
#include
#include
#include
#include
#define db double
using
namespace std;
const
int m=
3e6+10;
const db pi=
acos(-
1);struct complex
complex
(db a,db b):x
(a),
y(b)
}a[m]
;complex operator+(
const complex &a,complex &b)
complex operator-(
const complex &a,complex &b)
complex operator*(
const complex &a,complex &b)
int r[m]
;void
dft(complex *a,
int n,
int f)}}
if(f==-1
)for
(int i=
0;i<=n;i++
)a[i]
.y/=(2
*n);
}void
fft(complex *a,
int n,
int m)
int n,m,x;
intmain()
return0;
}
乙個小技巧
下午去牙科看牙,順便幫我媽把鞋上個鞋絆。修鞋的老太太慈眉善目,於是跟她攀談起來。我問她,您看這鞋怎麼樣啊?老太太瞅瞅鞋,笑笑不說話。我又說,這是在沂蒙大樓專櫃買的,打折處理的 款,也不知道質量怎麼樣。老太太嗯嗯幾聲,還是不言語。一邊修著鞋,老太太看我態度還算虛心,就跟我傳授了經驗。大意就是,專櫃處理...
VIM ctags的乙個小技巧
vim可以使用ctags製作的tags檔案來瀏覽程式原始檔。問題是,當原始檔存放在目錄樹 也就是所謂的source tree 的時候,該怎麼辦呢?在預設情況下,ctags只會處理當前目錄裡的原始檔,而且vim也只會參考當前目錄的tags檔案。這時候,如果當前目錄裡的原始檔引用了其他目錄裡的定義,那麼...
tomcat的乙個小技巧
tomcat進入manage管理介面的方法.1,進入到tomcat檔案加然後進去找到conf資料夾裡面的tomcat user.xml檔案 2.用記事本開啟。3.要想進入到manage的管理頁面,首先新增乙個管理員角色 然後寫上你想要輸入的使用者名稱或者密碼即可 這樣就可以用從管理的manage裡面...