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

2021-08-29 20:52:49 字數 1234 閱讀 3094

小a有n個數,他提出了乙個很有意思的問題:他想知道對於任意的x, y,能否將x與這n個數中的任意多個數異或任意多次後變為y
輸入描述:

第一行為乙個整數n,表示元素個數

第二行一行包含n個整數,分別代表序列中的元素

第三行為乙個整數q,表示詢問次數

接下來q行,每行兩個數x,y,含義如題所示

輸出描述:

輸出q行,若x可以變換為y,輸出「yes」,否則輸出「no」
示例1

輸入

5

1 2 3 4 5

36 7

2 13 8

輸出

yes

yesno

說明

對於(6,7)來說,6可以先和3異或,再和2異或

對於(2,1)來說,2可以和3異或

對於(3,8)來說,3不論如何都不能變換為8

給你n個數,q次詢問,每次詢問給兩個數x,y,問x能不能異或上這個n個數中的任意幾個變成y

先對n個數構建線性基,然後可以知道x^a=y,

則有x^y=a,所以只需判斷線性基能不能異或出a

#include

#include

#include

#include

using namespace std;

typedef

long

long

int ll;

const

int maxn=

1e5+7;

const

int mod=

1e9+7;

struct linear_basis

void

ins(ll x)

x^=b[i];}

} flag=true;

return;}

bool fin

(ll x)

}return0;

}}lb;

intmain()

int x,y;

scanf

("%d"

,&q)

;while

(q--

)return0;

}

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

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

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

f f就取 每個整數都可以看作乙個向量,v vv就取輸入的整數集合誘導出的向量集合。線性基本質上是一組基向量,只不過形式上我是用整數表示的。用b kb k bk 表示最高位的1 11在第k kk位的向量 整數 對於乙個新加入的數p pp 其實就是乙個向量 從最高位開始掃,發現當前位 第k kk位 等...

2019牛客多校一 H XOR 線性基

大意 給定序列,求所有異或和為 0 的子串行大小之和.先求出線性基,假設大小為 r 現任意求出一組線性基,然後再暴力驗證該組線性基內的數即可.include include include include include include include include include include...