ACWING256 最大異或和

2022-07-10 06:42:11 字數 949 閱讀 7595

原題鏈結

給定乙個非負整數序列 a,初始長度為 n。

有 m 個操作,有以下兩種操作型別:

1、」a x」:新增操作,表示在序列末尾新增乙個數 x,序列的長度 n 增大1。

2、」q l r x」:詢問操作,你需要找到乙個位置 p,滿足\(l≤p≤r\),使得:\(a[p] xor a[p+1] xor … xor a[n] xor x\) 最大,輸出這個最大值。

可持久化 trie 模板。

max_id 儲存當前子樹最大的下標值。

#include #include #include using namespace std;

const int n=600010,m=n*25;

int n,m,s[n],tr[m][2],max_id[m];

int root[n],idx;

void insert(int i,int k,int p,int q)

int v=s[i]>>k&1;

if(p) tr[q][v^1]=tr[p][v^1];

tr[q][v]=++idx;

insert(i,k-1,tr[p][v],tr[q][v]);

max_id[q]=max(max_id[tr[q][0]],max_id[tr[q][1]]);

}int query(int root,int c,int l)

return c^s[max_id[p]];

}inline int read()

int res=0;

while(ch>='0' && ch<='9')

return f*res;

}int main()

char op[2];

int l,r,x;

while(m--)

else

}return 0;

}

acwing143 144最大異或和

acwing143 在給定的n個整數a1,a2 an中選出兩個進行xor 異或 運算,得到的結果最大是多少?建乘一字典樹。插入0,1 從高位向低位 查詢相當於貪心?因為從高位查起,所以滿足這一位即使後面每一位不滿足,也比這一位不滿足後面每一位都滿足要強 二進位制真好 include include ...

最大異或和

問題描述 給出n個整數,多組詢問求乙個給出的數與這n個數中的乙個數的最大異或的值。輸入格式 第一行乙個整數n,表示有個數字。第二行n個正整數。第三行乙個整數m,表示m個詢問。第四行m個整數,表示m個詢問的整數。輸出格式 共m行,對於每個詢問輸出最大的異或值。輸入樣例 43 5 6 7 31 4 7 ...

最大異或和

展開 題目描述 給定乙個非負整數序列 初始長度為nn。有 mm 個操作,有以下兩種操作型別 a x 新增操作,表示在序列末尾新增乙個數 xx,序列的長度 n 1n 1。q l r x 詢問操作,你需要找到乙個位置 pp,滿足l le p le rl p r,使得 a p oplus a p 1 op...