FFT的多种应用
參考文章
FFT可以在nlogn的時(shí)間內(nèi)實(shí)現(xiàn)n次多項(xiàng)式F(x)和m次多項(xiàng)式G(x)的卷積
ck=∑i+j=kaibj=∑i=0kaibk?ic_{k}=\sum_{i+j=k}a_{i}b_{j}=\sum_{i=0}^{k}a_{i}b_{k-i}ck?=∑i+j=k?ai?bj?=∑i=0k?ai?bk?i?
基本形式:
對(duì)于類似:∑i+j=N+kaibj\sum_{i+j=N+k}a_{i}b_{j}∑i+j=N+k?ai?bj?的式子,可以直接用FFT計(jì)算
例題:P3723 [AH2017/HNOI2017]禮物
直接計(jì)算卷積
經(jīng)過簡(jiǎn)單的推導(dǎo)即可推出可以用計(jì)算卷積來解決,這類問題多形如對(duì)所有不大于n的k求出某個(gè)東西,其中k的答案為求某個(gè)卷積后結(jié)果數(shù)組的第k項(xiàng)。
例題:CF993E
多項(xiàng)式運(yùn)算
多項(xiàng)式乘法可以用來表示卷積,而借助多項(xiàng)式的性質(zhì),可以分析并解決類型更為廣泛的問題。其中,最典型的例子是利用生成函數(shù)解決組合計(jì)數(shù)問題,這往往可以簡(jiǎn)化推導(dǎo)過程,有時(shí)還可以借助專用算法優(yōu)化復(fù)雜度。
字符串匹配
設(shè)s,t為字符串,其中t中某些字符是通配符,可以匹配任意字符,求s在t中的所有匹配的位置。將通配符設(shè)為0,其余字符設(shè)為非0的數(shù),則s在k處匹配當(dāng)且僅當(dāng)∑0≤i<∣s∣ti+k(si?ti+k)2=0\sum_{0\leq i<|s|}t_{i+k}(s_{i}-t_{i+k})^2=0∑0≤i<∣s∣?ti+k?(si??ti+k?)2=0
結(jié)合計(jì)算卷積,輕松算出左邊的式子,完成匹配
模板題:P4173 殘缺的字符串
CF528D Fuzzy Search
總結(jié)
- 上一篇: Strange Memory Gym -
- 下一篇: P4173 残缺的字符串