大佬の部落格
fwt與運算。
其實就是這個的低配版本
用來快速計算子集卷積。
就是說,
f [i
]=∑g
[j]∗
h[k]
(j∣k
=i&&
j&k=
0)f[i]=\sum
f[i]=∑
g[j]
∗h[k
](j∣
k=i&
&j&k
=0)打包運算。
首先我們考慮它的低配版本。
f [i
]=∑g
[j]∗
h[k]
(j∣k
=i)f[i]=\sum
f[i]=∑
g[j]
∗h[k
](j∣
k=i)
我們定義f1[i]表示所有i的子集的和。
不如直接看圖算了。.
這樣我們就實現了打包運算:h』[i]表示所有下標是i的子集的答案之和。
考慮我們算重了什麼。
我們會把有交集的下標算進去,比如2&3
=22\&3=2
2&3=
2實際上是不行的。
統計位數。
令f[i][j]表示下標為i,i中有j個1的f的對應變換,即只考慮所有pop
coun
t(i)
==jpopcount(i)==j
popcou
nt(i
)==j
的原f陣列為對應值。
然後列舉兩邊的1個數,只有所有1的個數與下標實際1的個數相同的才會產生貢獻。
(否則就是打包出鍋了。)
最後對於每個下標處相乘時多項式反演即可。
用n
2n^2
n2即可。小朋友化式子法
總結 快速莫比烏斯變換和子集卷積
馬上noip了我在學點啥 求集合並卷積,即 h s sum sum l cup r f l g r 要求更嚴一點,求子集卷積,即 h s sum sum l cup r s l cap r varnothing f l g r sum f l g 先看集合並卷積 最暴力的做法就是 o 2 n 分別列...
科技 快速莫比烏斯變換(反演) 與 子集卷積
我們比較了解的是有關多項式的乘法運算,對於下標為整數,下標運算為相加等於某個數的時候,我們有很優秀的fft做法。但是遇到一些奇怪的卷積形式時,比如我們定義 h f g h sum limits sum limits l cup r s f g 此時下標是乙個集合,運算為集合並的卷積,我們已知了 f ...
莫比烏斯函式與莫比烏斯反演
1.1 莫比烏斯函式 莫比烏斯函式可以看做乙個輔助函式,它在莫比烏斯反演公式中用到。1.2 莫比烏斯反演 莫比烏斯反演公式是 根據和函式來求算數函式的乙個公式。1.3 算數函式 所有在正整數上運算的函式稱為算數函式。1.4 和函式 設 f 是算數函式,f 的和函式為n的所有約數的算數函式之和。1.5...