1. 程式人生 > >快速沃爾什變換(FWT)(學習筆記)

快速沃爾什變換(FWT)(學習筆記)

學習了 F F T FFT ,已經解決了形如 c ( k )

= i + j = k a
( i ) × b ( j ) c(k)=\sum_{i+j=k}a(i)\times b(j)
的問題,那如果條件不是普通的加法,而是一些特殊的二進位制運算怎麼辦呢?
這時候就有了 F W T FWT

也就是說, F W T FWT 可以用來解決形如 c ( k ) = i j = k a ( i ) × b ( j ) c(k)=\sum_{i\oplus j=k}a(i)\times b(j) 的問題,其中 \oplus 是二進位制運算子

如何做?
F W T ( A ) FWT(A) 看成一個 n n 維向量,然後把它按最高位為 0 1 0、1 分成 F W T ( A 0 ) FWT(A_0) F W T ( A 1 ) FWT(A_1) ,很明顯 F W T ( A ) = F W T ( A 0 ) , F W T ( A 1 ) FWT(A)=FWT(A_0),FWT(A_1)

類似 F F T FFT F W T FWT 也可以用兩個多項式按位相乘而得來
定義
A + B = ( A 0 + B 0 , A 1 + B 1 , , A n + A n ) A+B=(A_0+B_0,A_1+B_1,···,A_n+A_n)
A B = ( A 0 B 0 , A 1 B 1 , , A n A n ) A-B=(A_0-B_0,A_1-B_1,···,A_n-A_n)
A B = ( i j = 0 A ( i ) × B ( j ) , , i j = n A ( i ) × B ( j ) ) A\oplus B=(\sum_{i\oplus j=0}A(i)\times B(j),···,\sum_{i\oplus j=n}A(i)\times B(j))

首先給出結論:
o r : F W T ( A ) = { F W T ( A 0 ) , F W T ( A 0 ) + F W T ( A 1 ) n > 0 A n = 0 or卷積:FWT(A)=\begin{cases}FWT(A_0),FWT(A_0)+FWT(A_1)&n>0\\A&n=0\end{cases}
a n d : F W T ( A ) = { F W T ( A 0 ) + F W T ( A 1 ) , F W T ( A 1 ) n > 0 A n = 0 and卷積:FWT(A)=\begin{cases}FWT(A_0)+FWT(A_1),FWT(A_1)&n>0\\A&n=0\end{cases}
x o r : F W T ( A ) = { F W T ( A 0 ) + F W T ( A 1 ) , F W T ( A 0 ) F W T ( A 1 ) n = 1 A n = 0 xor卷積:FWT(A)=\begin{cases}FWT(A_0)+FWT(A_1),FWT(A_0)-FWT(A_1)&n=1\\A&n=0\end{cases}

相關推薦

BZOJ4589 Hard Nim快速沃爾變換FWT

std ems 加速 多少 mem 一次 ++ log 素數篩 這是我第一道獨立做出來的FWT的題目,所以寫篇隨筆紀念一下。 (這還要紀念,我太弱了) 題目鏈接: BZOJ 題目大意:兩人玩nim遊戲(多堆石子,每次可以從其中一堆取任意多個,不能操作就輸)。$T$ 組數據,

HDU 5977 Garden of Eden 樹形dp+快速沃爾變換FWT

就是 empty 代碼 -- vat 形式 什麽 水題 def CGZ大佬提醒我,我要是再不更博客可就連一月一更的頻率也沒有了。。。 emmm,正好做了一道有點意思的題,就拿出來充數吧=。= 題意 一棵樹,有 $ n (n\leq50000) $ 個節點,每個點都有一個顏色

Luogu4717 【模板】快速沃爾變換FWT

  https://www.cnblogs.com/RabbitHu/p/9182047.html   完全沒有學證明的慾望因為這個實在太好寫了而且FFT就算學過也忘得差不多了只會寫板子 #include<iostream> #include<cstdio> #include

快速沃爾變換詳解FWT

快速沃爾什變化(FWT)介紹 能看到這篇部落格的人,一定知道FWT是幹什麼的。(什麼?你不知道?)  沒事,這裡有picks講FWT的一篇部落格。先點進去看一看。  如果你看懂了,那麼恭喜你。如果你跟我一樣看不懂,那麼請繼續往下看。 這裡的A和B都是什麼呢?其實它們是一個多維的向量(如

BZOJ4589 Hard Nim快速沃爾變換模板

code 時間 ons include pre zoj logs for turn 終於抽出時間來學了學,比FFT不知道好寫到哪裏去。 #include <cstdio> typedef long long ll; const int N=65536,p=1

Codeforces 662C Binary Table快速沃爾變換

void 一個 很好 class force sum char s tps sca Problem 給定一個n(≤20)*m(≤100 000)的01矩陣,每次操作可以將一行或一列取反。 求最終1的最少個數。 Solution 前置技能:快速沃爾什變換(FWT)。 觀察到

FWT快速沃爾變換學習筆記

class 方法 兩個 拼接 先來 位運算 isp 形式 ase FWT快速沃爾什變換學習筆記 1、FWT用來幹啥啊 回憶一下多項式的卷積\(C_k=\sum_{i+j=k}A_i*B_j\) 我們可以用\(FFT\)來做。 甚至在一些特殊情況下,我們\(C_k=\sum_

一個數學不好的菜雞的快速沃爾變換(FWT)學習筆記

spa 最長 ML form 相加 pre 證明 a* orm 一個數學不好的菜雞的快速沃爾什變換(FWT)學習筆記 曾經某個下午我以為我會了FWT,結果現在一丁點也想不起來了……看來“學”完新東西不經常做題不寫博客,就白學了 = = 我沒啥智商 ,網上的FWT博客我大多看

洛谷.4717.[模板]快速沃爾變換(FWT)

題目連結 https://www.k-xzy.xyz/archives/7598 //285ms 3.53MB #include <cstdio> #include <cctype> #include <cstring> #include <algorithm&g

快速沃爾變換(FWT)

1前言 在之前學完了FFT稍微碼了一些題、也學習了一下NTT相關的知識之後,我覺得有必要學習一下FWT,這篇部落格就是闡述我對FWT的理解的 2介紹 2.1解決的問題 對於FFT,它的過程本質上是

Fast Walsh-Hadamard Transform——快速沃爾變換

進行 表達式 nsf for 進制 bsp 兩個 容易 美的 模板題:   給定$n = 2^k$和兩個序列$A_{0..n-1}$, $B_{0..n-1}$,求   $$C_i = \sum_{j \oplus k = i} A_j B_k$$   其中$\oplus$

快速沃爾變換

const ron 輸入輸出格式 return cst and spl add n) 快速沃爾什變換 題目背景 模板題,無背景 題目描述 給定長度為\(2^n\)兩個序列\(A,B\),設\(C_i=\sum_{j\oplus k=i}A_jB_k\) 分別當\(\oplu

淺談快速沃爾變換

name puts 算法 多項式 lin 題目 namespace -i pla 快速沃爾什變換(fwt) \(fwt\)是一種快速計算位運算卷積的算法,一般包括按位或卷積,按位與卷積和異或卷積。 按位或(or)卷積 對於多項式\(A,B,C\),定義\(\oplus\)為

C# 操作TreeView ,數據庫讀取數據2017-12-12學習筆記

rom 工具 執行 ext des pat view ring () 1.學習知識點: 數據庫操作語法: SqlConnection 數據庫連接對象 SqlConnection con =new SqlConnection(); con.open();//打開數據庫 Sq

struts2框架之類型轉換參考第二天學習筆記

例如 源文件 com sym rop 字段名 找到 攔截 from 類型轉換 1. 什麽是類型轉換 剛才學習了封裝請求參數,把表單數據封裝到Action(模型)的屬性中。表單中的數據都是String類型,但Action(模型)的屬性不一定什麽類型。 將來我們還需要數據的

struts2框架之攔截器參考第二天學習筆記

xxx java clas 完成 攔截 銷毀 == 情況 配置 攔截器 1. 什麽是攔截器 1). 與JavaWeb中的Filter比較相似。 2). 攔截器只能攔截Action!!! 2. Struts中定義了很多攔截器,其中defaultStack中的攔截器會在每個

HTML基本語法慕課網學習筆記

標題 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>學習html標題</title> </head> &l

CSS基本語法慕課網學習筆記

CSS的宣告,內外聯樣式以及CSS的優先順序 css學習.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>CSS學習&

洛谷4630 BZOJ APIO2018 鐵人兩項 圓方樹 dp 圓方樹學習筆記

題目連結 題意:給你一個n個點m條邊的無向圖,求所有的能從s到c再到t的三元組個數,其中每個點在一條路徑上至多經過一次。n,m1e5量級。 題解: 首先介紹一下圓方樹。 還記得zyb大佬憑藉圓方樹在APIO拿AU並在SD二輪進隊,近年來圓方樹也成為了一個熱門演算法,於是還是很有必