小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...