洛谷 4717 模板 快速沃爾什變換

2021-09-25 19:41:43 字數 1257 閱讀 3700

題目描述

給定長度為2

n2^n

2n兩個序列a,b

a,ba,

b,設ci​

=∑j⊕

k=ia

jb

kc_i​=\sum_a_jb_k

ci​​=∑

j⊕k=

i​aj

​bk​

​ 分別當⊕

\oplus

⊕是or,and,xor時求出c

輸入格式

第一行乙個數n。 第二行2n個

數a0.

.a2n

−1

​2^n個數a_0..a_​

2n個數a0

​..a

2n−1

​​第三行2n個

數b0.

.b2n

−1

2^n個數b_0..b_

2n個數b0

​..b

2n−1

​輸出格式

三行每行2

n2^n

2n個數,分別代表⊕

\oplus

⊕是or,and,xor時c0.

.c2n

−1

c_0..c_

c0​..c

2n−1

​​的值 mo

d998244353

\bmod\ 998244353

mod998

2443

53

輸入輸出樣例

輸入 #1

22 4 6 8

1 3 5 7

輸出 #1

2 22 46 250

88 64 112 56

100 92 68 60

說明/提示

n≤17n。

#include#include#include#includeusing namespace std;

const int mod = 998244353,inv2 = (mod + 1) >> 1;

typedef long long ll;

inline static const void reduce(int&x)

inline static const void mulor(int*a,int*b,int*c,int lm)

快速沃爾什變換

用於解決集合邏輯運算的演算法。就是能夠造出類似多項式卷積的形式 可以是 證明解釋什麼的。找了大半天了,也沒找到個自己能看懂的,好吧,背模板 題面 給出n個小於2 20的數,指定 其中之一為操作opt,求給定的n個數中任選兩個,經過opt操作後能得到的最大值是多少?solution 記fi 數字i出現...

基本操作 快速沃爾什變換

還是補全一下科技樹吧.之後可能就專心刷刷題?雖然感覺我的科技樹連開始的一層都沒點全。fwt 可以用來解決多項式的位運算卷積,也就是對於兩個多項式 a,b 求乙個 c 滿足 c k sum limits n sum limits n i oplus j k a i times b j 常見的有 and...

FFT 快速傅利葉變換 FWT 快速沃爾什變換

實在是 美麗的數學啊 關於傅利葉變換的部落格 講的很細緻 非常易於理解 大概能明白傅利葉變換是幹嗎的了 但是還是不能明白為什麼用傅利葉變換來算多項式求和 在多項式中,dft就是係數表式轉換成點值表示的過程。我們熟知的是多項式的係數表示法,通過給定一組 來確定乙個唯一的多項式 而多項式還可以有另一種表...