FWT背板筆記

2022-03-27 01:34:02 字數 1960 閱讀 2994

板子

背板子.jpg

\(fwt\)用於解決這樣的問題

\[c_i=\sum_a_j\times b_k

\]其中\(\bigoplus\)是一種二元運算子,如\(or,and,xor\)

首先我們直接做複雜度顯然高達\(4^n\),或許可以利用一些列舉子集的技術做到\(3^n\),但是還是非常難以接受

於是我們考慮能否像\(fft\)那樣構造出一種變換\(tf\),使得\(tf(c)=tf(a)*tf(b)\)(這裡是逐位相乘),同時快速完成這個變換以及逆變換呢

下面以\(or\)卷積為例

我們設\(tf(a)(i)=\sum_a_j\)

發現這個\(j|i=i\)就是說\(j\)是\(i\)的子集啊

於是\[tf(a)(i)*tf(b)(i)=\sum_a_j\times \sum_b_k

\]既然\(j,k\)都是\(i\)的子集,那麼\(j|k\)顯然也是\(i\)的子集,設\(t=j|k\)

於是\[tf(a)(i)*tf(b)(i)=\sum_a_j\times b_k=\sum_c_t=tf(c)(i)

\]我們發現如果這樣構造\(tf\),我們是可以得到\(tf(a)*tf(b)=tf(c)\)這樣的性質的,於是就可以像\(fft\)那樣直接逐位相乘之後逆變換了

考慮如何進行變換

變換如下

\[tf(a)=\begin(tf(a_0),tf(a_0+a_1)) & n\gt0 \\ a & n=0\end

\]\(a_0\)是\(a\)的前\(2^\)項組成的多項式,\(a_1\)是後\(2^\)項組成的多項式

在\(n=0\)的時候,\(tf(a)=a\)成立這非常顯然啊

考慮一下\(n>0\)的情況

那個\((tf(a_0),tf(a_0+a_1))\)就是把兩個\(2^\)的多項式連線起來的意思

我們對於\(tf(a)\)的前\(2^\)項,就是\(a_0\)的變換,跟\(a_1\)沒有什麼關係,因為這前\(2^\)項第\(n\)位都是\(0\),不可能跟後\(2^\)項第\(n\)位都是\(1\)產生關係

考慮後\(2^\)項,根據乙個非常感性的理解,後\(2^\)項的第\(n\)位都是\(1\),我們構造出多項式\(a_0+a_1\),只看後面的\(n-1\)位自然是滿足我們的\(tf\)的規則的,就是\(j\)是\(i\)的子集,又由於\(i\)的第一位是\(1\),所以\(j\)的第一位是\(0\)是\(1\)都可以,所以我們直接用\(a_0+a_1\)就好了

類似的,我們也可以推出逆變換

\[itf(a)=\begin(itf(a_0),itf(a_0-a_1)) & n\gt0 \\ a & n=0\end

\]於是我們就可以寫出\(or\)卷積的**

inline void fwtor(ll *f,int o) a_j\)

發現\(j\&i=i\)就是說\(j\)是\(i\)的超集

我們也能相應寫出變換

\[tf(a)=\begin(tf(a_0+a_1),tf(a_1)) & n\gt0 \\ a & n=0\end

\]以及逆變換

\[itf(a)=\begin(itf(a_0-a_1),itf(a_1)) & n\gt0 \\ a & n=0\end

\]以及**

inline void fwtand(ll *f,int o) (tf(a_0+a_1),tf(a_0-a_1)) & n\gt0 \\ a & n=0\end

\]嘗試證明一下?對不起我咕了,掛乙個yyb跑路了

板子還是放上來吧

inline void fwtxor(ll *f,int o)

const int mod=998244353;

int n,len;

ll a[maxn],b[maxn],a[maxn],b[maxn];

inline void fwtor(ll *f,int o)

}int main()

FWT 學習筆記

因為考試遇見了所以來學習一下,雖然好像之前有個神仙來講過,但啥都記不到了 相比fft的ci j k iaj b kc i sum a j b k ci j k i aj bk fwt其實很簡單 c i j k iaj b kc i sum a j b k ci j k i aj bk 其中 bigo...

FWT 學習筆記

好久以前寫的,先粘上來 定義陣列 n 2 k a a 0,a 1,a 2,a 3,a 令 a 0 a 0,a 1,a 2,a 且 a 1 a a a 即 a 0 為沒有最高位的部分,a 1 為有二進位制最高位的部分 a 可以用 a 表示 定義運算 a b a 0 b 0,a 1 b 1,a n b ...

atca背板 高速背板及相關標準介紹

背板本身是一種較為特殊的pcb,它主要為系統內各種型別的子卡提供互連通道,包括訊號,電源,管理介面等。結構上也起到了對子卡的支撐作用。高速背板與普通背板的不同是高速背板上訊號互連的速率較高,所使用的pcb材料以及背板聯結器都是高速相關的。如下圖所示為傳統的高速背板互連系統,主要由背板,子卡以及聯結器...