異或序列(莫隊)

題目描述

已知一個長度爲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。

 

來源/分類

重慶OI2018 

題解:題目通過莫隊的方式進行線性運算的基礎是(x[1]^x[2]^....^x[i]) ^(x[1]^x[2]^....^x[i-1])=x[i],又因爲x^(x^k)=k,所以只要每次把區間內的x和x^k的數量記錄下來;

           並且因爲這種異或方式,在存入時需要把詢問的左區間向左挪一位;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章