題目描述
已知一個長度爲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 4
1 3
2 3
2 4
4 4
樣例輸出
4
2
1
2
1
提示
對於30%的數據,1≤n,m≤1000。
對於100%的數據,1≤n,m≤105,0≤k,ai≤105,1≤lj≤rj≤n。
來源/分類
題解:題目通過莫隊的方式進行線性運算的基礎是(x[1]^x[2]^....^x[i]) ^(x[1]^x[2]^....^x[i-1])=x[i],又因爲x^(x^k)=k,所以只要每次把區間內的x和x^k的數量記錄下來;
並且因爲這種異或方式,在存入時需要把詢問的左區間向左挪一位;