給定乙個長度為n的非負整數序列,求序列的所有子區間異或值之和模998244353,和所有子區間之和的異或值。
n≤105,ai≤106。
題解:
先考慮第一問。
令xor(i)表示前i項的異或值,xor(l,r)表示第l項到第r項的異或值,那麼xor(l,r)=xor(r)⊕xor(l−1)。
考慮xor(l,r)的二進位制第k位是1的可能情況,當且僅當xor(r)和xor(l−1)的二進位制第k位不同。
那麼我們可以固定右端點r,算出有多少個l使xor(l,r)的第k位是1,假設已經算出右端點為r的答案,現在可以o(1)推到右端點為r+1的答案,因為對於r+1來說新增的l只有r+1乙個,只需要o(1)將貢獻產生即可。時間複雜度o(nloga)。
mycode:
#include
using
namespace
std;
const
int maxn = 2e5+7;
int sum[maxn],a[maxn],c[maxn];
int main()
int ans = 0;
for(int k=0;k<=29;k++)
}cout
0;}
1 拆位做法
2 題目鏈結
3 第二問做法
第二問做法2
第二問做法3
官方題解
4 其他異或問題
異或之
bzoj 4017 小Q的無敵異或
time limit 20 sec memory limit 128 mb submit 593 solved 197 submit status discuss 背景 小q學習位運算時發現了異或的秘密。描述小q是乙個熱愛學習的人,他經常去維基百科 學習電腦科學。就在剛才,小q認真地學習了一系列位運...
bzoj 4017 小Q的無敵異或
time limit 20 sec memory limit 128 mb submit 736 solved 242 submit status discuss 背景 小q學習位運算時發現了異或的秘密。描述小q是乙個熱愛學習的人,他經常去維基百科 學習電腦科學。就在剛才,小q認真地學習了一系列位運...
bzoj4017 小Q的無敵異或 數學
一般和異或相關的求和都是一位一位來的。這題也一樣。首先看第一問。令sum i a 1 a 2 a i 那麼xor l,r sum l 1 sum r 考慮每一位對答案帶來的影響。假設現在考慮二進位制第k位 從低到高 對答案的影響。對於sum x 它的第k位對答案的影響為2 k t,其中t為1.x 1...