牛客17968 xor序列(線性基學習)

2021-09-25 01:30:32 字數 857 閱讀 6834

f

f就取\

,每個整數都可以看作乙個向量,v

vv就取輸入的整數集合誘導出的向量集合。線性基本質上是一組基向量,只不過形式上我是用整數表示的。

用b

kb_k

bk​表示最高位的1

11在第k

kk位的向量(整數)

對於乙個新加入的數p

pp(其實就是乙個向量),從最高位開始掃,發現當前位(第k

kk位)等於1

11時,如果b

kb_k

bk​沒有,那就令bk←

pb_k\leftarrow p

bk​←

p,並退出;否則p

pp^=bk

=b_k

=bk​

,然後繼續下一位

如果要查詢某個數能通過基中的整數異或出來,可以貪心地從高位到低位填

#include

#define maxn 100010

#define cl(x) memset(x,0,sizeof(x))

using

namespace std;

typedef

long

long ll;

struct linearbasis

void

build

(ll *a, ll len)}}

bool

check

(ll x)

}lb;

ll read

(ll x=0)

ll a[maxn]

, x, y, n;

intmain()

xor序列 (線性基)

小a有n個數,他提出了乙個很有意思的問題 他想知道對於任意的x,y,能否將x與這n個數中的任意多個數異或任意多次後變為y 第一行為乙個整數n,表示元素個數 第二行一行包含n個整數,分別代表序列中的元素 第三行為乙個整數q,表示詢問次數 接下來q行,每行兩個數x,y,含義如題所示輸出q行,若x可以變換...

牛客180D xor序列(線性基求存在性)

小a有n個數,他提出了乙個很有意思的問題 他想知道對於任意的x,y,能否將x與這n個數中的任意多個數異或任意多次後變為y輸入描述 第一行為乙個整數n,表示元素個數 第二行一行包含n個整數,分別代表序列中的元素 第三行為乙個整數q,表示詢問次數 接下來q行,每行兩個數x,y,含義如題所示輸出描述 輸出...

牛客練習賽26 D xor序列(線性基)

link description problem statement小a有n個數,他提出了乙個很有意思的問題 他想知道對於任意的x,y,能否將x與這n個數中的任意多個數異或任意多次後變為y input第一行為乙個整數n,表示元素個數 第二行一行包含n個整數,分別代表序列中的元素 第三行為乙個整數q,...