板子
背板子.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材料以及背板聯結器都是高速相關的。如下圖所示為傳統的高速背板互連系統,主要由背板,子卡以及聯結器...