CF 242E 線段樹區間亦或 求和

2021-09-27 03:53:16 字數 1818 閱讀 8661

題目鏈結

題意:給你n個數,有兩種操作,op=1,對從l到r的數求和,op=2,對從l到r的值xor val。

思路:由於亦或是位運算,我們可以考慮位運算的關係,

1 xor 1=0,

0 xor 1=1,

1 xor 0=1;

0 xor 0=0;

可以看出0 xor x=x;

1 xor 1=0,1 xor 0=1,就是1變0,0變1;

我們把每個數都拆成2進製,由於是求和,只考慮每一位上1的個數,按位展開求和即可。那麼我們亦或乙個數也是只亦或位=1的時候,開20顆線段樹就可以維護每一位的狀態。

其實就是普通的區間更新區間求和問題,只不過線段樹是二維的

線段樹 區間求和

給定一數列,規定有兩種操作,一是修改某個元素,二是求區間的連續和。輸入資料第一行包含兩個正整數n,m n 100000,m 500000 以下是m行,每行有三個正整數k,a,b k 0或1,a,b n k 0時表示將a處數字加上b,k 1時表示詢問區間 a,b 內所有數的和。對於每個詢問輸出對應的答...

線段樹(區間更新求和)

poj 3468 include using namespace std define max 100100 struct node 求區間長度 int get dis node tree max 3 long long d max 建樹 long long build int left,int r...

線段樹 區間求和模板 (區間修改)

include include include include include include include include include define mem a memset a,0,sizeof a define mem2 a memset a,1,sizeof a define mod ...