LuoguP4462 CQOI2018 異或序列

2022-05-06 23:42:10 字數 904 閱讀 9587

鏈結

異或的逆運算就是其本身

即a xor b = c 即 c xor a = b

對於本題,

記錄一下1-i的異或和為sum[i]

顯然l~r的異或和就為sum[l-1] xor sum[r]

若為異或和為k即滿足sum[r] xor k = sum[l-1]

開個桶,莫隊即可

注意一下莫隊處理時刪除乙個數時的順序就好了

#includeusing

namespace

std;

#define ll long longinline ll read()

while(ch<'

0'||ch>'9'

);

dowhile(ch>='

0'&&ch<='9'

);

return f*x;

}const

int maxn = 100000 + 10

;struct

query

q[maxn];

intn,m,k,sz;

inta[maxn],sum[maxn];

intbol[maxn];

intans[maxn];

intcnt[maxn];

inline

bool

cmp(query a1,query a2)

intmain()

sort(q+1,q+m+1

,cmp);

int l = 1,r = 0

;

int res = 0

;

for(int i=1;i<=m;i++)

for(int i=1;i<=m;i++)

}

P4462 CQOI2018 異或序列

原題鏈結 給你乙個長度為 n 的序列和 m 次詢問,求每次詢問中有多少個子區間異或和為 k 這是一道區間查詢的題目,所用的演算法是資料結構,我這裡用的是莫隊演算法 回顧一下異或的神奇性質 1.a b c 則 a c b b c a 2.a a 0 a 0 a 則 a a a a 有了上面的性質,我們...

P4462 CQOI2018 異或序列

求出異或字首和sum,對於 a l a l 1 a r 就變成了sum r sum l 1 所以最終我們要求的就是在區間 l,r 中有多少子區間 l,r 是滿足 sum r sum l 1 k 的 sum r sum l 1 k sum l 1 sum r k sum r k sum l 1 變換以...

P4462 CQOI2018 異或序列 莫隊

區間異或 sum l,r pr e l 1 xo rpre r sum l,r pre l 1 xor pre r sum l,r p re l 1 x orpr e r a xo rb k axo rk b a xor b k implies a xor k b axorb k ax ork b ...