可持久化trie

2022-01-29 09:17:12 字數 881 閱讀 7841

可持久化trie樹

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

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

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

q l r x:詢問操作,你需要找到乙個位置p,滿足l≤p≤r,使得:a[p]⊕a[p+1]⊕...⊕a[n]⊕x最大,輸出最大是多少。

solution

異或滿足可減性,所以可以維護字首和

新增操作就方便了

就是詢問操作不太好處理

// luogu-judger-enable-o2

#include using namespace std;

#define maxn 600009

int rt[maxn],cnt[maxn*28];

int ch[maxn*28][2];

int qz[maxn];

int tt=1;

int n,m;

void ins(int a,int b,int t,int x)

int qu(int a,int b,int t,int x)

inline void write(int x)

int getc()

void insert(int x)

size[node]=size[rt]+1;

}void query(int l,int r,int x)

write(ans);

putchar(10);

}int main()

return 0;

}

Trie 可持久化Trie

warning 以下 未經測試,若發現錯誤,歡迎指出qwq 一種簡單的資料結構,可儲存大量字串,可在 o len 的時間內完成插入,刪除,查詢等操作。下面是乙個簡單的例子,對於abc,abd,abcd,bcd這四個字串建trie樹,如下圖 其中,紅色節點為乙個字串的結尾。對於任意節點,從根節點到該節...

可持久化trie樹

腦補出來的乙個東西,不知道別人是怎麼實現的 自己也還沒有用寫的 交過題 不過把想法和大佬說了,應該是正確的。乙個數列,每次查詢 l,r 內的數中取乙個數和給定值xor後的最大值。如果沒有區間限制,那麼直接將所有數都插入trie樹就可以了,但是這裡需要指定區間的,所以不能直接處理。因此對於trie樹上...

Trie樹 可持久化

made by xiper updata time 2015 12 8 test status 使用前呼叫初始化函式 init 同時 root 0 0 struct trie persistent tree triesize 獲取字符集雜湊編號 必須在 0 lettersize 之內 inline ...