FWT小记

终于可以开始写了。

这玩意也不难来着。

高维前缀和。

Link

本质就是分维度

例题:先暂时没有。

FWT

造轮子。

\(C_i =\sum\limits_{j \otimes k} A_j B_k\)

\(\otimes\) 表示某种运算。

FFT 告诉我们卷积直接很困难,但是点积很简单,所以考虑找到他的线性变换。

令变换后的项叫做 \(\text{FWT(A)}\)

使用待定系数 $\text{FWT(A)} = \sum\limits_{j=0}^{n-1} c(i,j) A_j $

\[\begin{aligned} \text{FWT(C)} &= \text{FWT(A)} \cdot \text{FWT(B)} \\ \sum\limits_{i=0}^{n-1} c(i,j) C_j &= \sum\limits_{j=0}^{n-1} c(i,j) A_j \times \sum\limits_{j=0}^{n-1} c(i,j) B_j \\ \sum\limits_{j=0}^{n-1} c(i,j) C_j &= \sum_{j=0} ^{n-1} \sum_{k=0}^{n-1} c(i,j) c(i,k) A_j B_k \end{aligned} \]

\[\begin{aligned} C_i &=\sum\limits_{j \otimes k} A_j B_k \\ \text{FWT(C)}_i &=\sum_{p=0}^{n-1} c(i,p) \sum\limits_{j \otimes k = p} A_j B_k \end{aligned} \]

联立上下

\[\begin{aligned} \sum_{j=0} ^{n-1} \sum_{k=0}^{n-1} c(i,j) c(i,k) A_j B_k &= \sum_{p=0}^{n-1} c(i,p) \sum\limits_{j \otimes k = p} A_j B_k \\ \sum_{j=0} ^{n-1} \sum_{k=0}^{n-1} c(i,j) c(i,k) A_j B_k & =\sum_{p=0}^{n-1} \sum\limits_{j \otimes k = p} c(i, j \otimes k) A_j B_k \\ \sum_{j=0} ^{n-1} \sum_{k=0}^{n-1} c(i,j) c(i,k) A_j B_k &=\sum_{j=0} ^{n-1} \sum_{k=0}^{n-1} c(i, j \otimes k) A_j B_k \end{aligned} \]

所以我们有 \(c(i,j)c(i,k)= c(i, j \otimes k)\),枚举状态,得到矩阵。

posted @ 2025-08-12 20:24  q1uple  阅读(13)  评论(0)    收藏  举报
1