時間限制: 1 sec 記憶體限制: 128 mb
提交: 188 解決: 86
[提交] [狀態] [討論版] [命題人:admin]
題目描述
已知乙個長度為n的整數數列a1,a2,…,an,給定查詢引數l、r,問在al,al+1,…,ar區間內,有多少子串行滿足異或和等於k。也就是說,對於所有的x,y(l≤x≤y≤r),滿足ax⊕ax+1⊕⋯⊕ay=k的x,y有多少組。
輸入輸入第一行為3個整數n,m,k。第二行為空格分開的n個整數,即a1,a2,…,an。接下來m行,每行兩個整數lj,rj,代表一次查詢。
輸出輸出共m行,對應每個查詢的計算結果。
樣例輸入
4 5 1樣例輸出1 2 3 1
1 41 3
2 32 4
4 4
421提示21
對於30%的資料,1≤n,m≤1000。
對於100%的資料,1≤n,m≤105,0≤k,ai≤105,1≤lj≤rj≤n。
莫隊板子題,只要維護下字首和就行,順便學了一波簡單莫隊
#include typedef long long ll;
using namespace std;
int a[100005],ans[100005];
int tmp[100005];
int l,r,cnt,tmpp;
struct fun
z[100005];
bool cmp (fun a, fun b)
bool cmp1(fun a, fun b)
int main()
tmp[ a[0] ]++;
sort(z, z + m, cmp);
for (int i = 0; i < m; i++)
while (l > z[i].l)
while (r < z[i].r)
while (r > z[i].r)
ans[ z[i].i ] = cnt;
}sort(z, z + n, cmp1);
for (int i = 0; i < m; i++)
printf("%d\n", ans[i]);
return 0;
}
異或和之和 異或問題
題目 有n個數,任選3個進行異或,求出所有三元組的異或和的和 普通計算是 o n 3 但是發現,對於異或的運算,就轉換為二進位制的運算,把每乙個陣列轉換為二進位制,再拆分,當且僅當 1 1 1 和 1 0 0 時,答案才為1,否則都是0,也就是說,只有這兩個情況是由貢獻的 把每個數位化為二進位制,然...
6759A異或序列
題目描述 已知乙個長度為n的整數數列a1,a2,an,給定查詢引數l r,問在al,al 1,ar區間內,有多少子串行滿足異或和等於k。也就是說,對於所有的x,y l x y r 滿足ax ax 1 ay k的x,y有多少組。輸入輸入第一行為3個整數n,m,k。第二行為空格分開的n個整數,即a1,a...
異或 異或相關
感謝 morning glory 贊助 異或異 或 de scri ptio ndes crip tion 給定 l,r l,r,求 i lr j lr i ji l r j l r i jl,r 1 09l,r 1 09 s olut ions olut ion 假設l 1,r 4l 1,r 4,...