題目
建可持久化01trie。
每次建乙個新版本把序列的每個字首和插進去。
新增操作亦如此。
查詢的話就看每個數字取反的一側在01trie的這個區間內是否出現過(也就是\(sum\)是否相等),然後跳兒子。
這裡蘊含了高位貪心的思想。
#includeusing namespace std;
const int n=3e7;
int read()
int n,m,cnt,root[n],son[n][2],d[31],sum[n];char s[3];
int get()
void split(int p)
void update(int &p,int pre)
int query(int l,int r)
int main()
LuoguP4735最大異或和(可持久化Trie)
題目傳送門 給乙個序列 長度為n.有m個操作.1.在序列末尾新增乙個x.2.找到乙個 p l,r 使得 a p a p 1 a n x 最大,其中n為序列的長度。記 all 為 a 1 a 2 a 3 a n 詢問即為找到乙個 p l,r 使得 a 1 a 2 a 3 a p all x 最大。所以...
P4735 最大異或和
給定乙個非負整數序列,初始長度為n。有m個操作,有以下兩種操作型別 a x 新增操作,表示在序列末尾新增乙個數x,序列的長度n 1。q l r x 詢問操作,你需要找到乙個位置p,滿足l p r,使得 a p a p 1 a n x最大,輸出最大是多少。輸入格式 第一行包含兩個整數 n,m,含義如問...
P4735 最大異或和
題目鏈結 給定乙個非負整數序列,初始長度為n。有m個操作,有以下兩種操作型別 a x 新增操作,表示在序列末尾新增乙個數x,序列的長度n 1。q l r x 詢問操作,你需要找到乙個位置p,滿足l p r,使得 a p a p 1 a n x最大,輸出最大是多少。輸入格式 第一行包含兩個整數n,m,...