LG4735 最大異或和

2022-05-07 20:45:09 字數 665 閱讀 5906

洛谷

維護乙個字首異或和\(s_i\)

對於乙個詢問操作\(l\)、\(r\)、\(x\)

就是等價於求乙個位置\(p\)(\(l\leq p \leq r)\)使得\(s_nxors_xorx\)最大

可將此問題轉化為求\(p\)使\(s_\)

\(xor\)

\(s_n xor x\)最大

先將後半部分求出然後在可持久化\(trie\)上貪心即可

#include#include#include#include#include#includeusing namespace std;

inline int gi()

const int max_n = 600005;

struct trie t[max_n * 24];

int s[max_n], rt[max_n], n, m, tot;

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

int query(int o, int val, int k, int limit)

int main ()

for (int i = 1; i <= m; i++) else

} return 0;

}

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,含義如問...

Luogu P4735 最大異或和

題目 建可持久化01trie。每次建乙個新版本把序列的每個字首和插進去。新增操作亦如此。查詢的話就看每個數字取反的一側在01trie的這個區間內是否出現過 也就是 sum 是否相等 然後跳兒子。這裡蘊含了高位貪心的思想。includeusing namespace std const int n 3...

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,...