可持久化字典樹模板題。。。
把每個數轉換成二進位制建立字典樹,按照下標建立可持久化字典樹,存一下子樹中點的個數就行了。
**:
1 #include2 #include3 #include4 #include5bzoj4546using
namespace
std;
6 inline char
nc()
12return *p1++;13}
14 inline void read(int&x)
19#define n 520001
20#define m 20
21int i,j,k,n,m,q,rt[n],p[m],sum[n*m],c[n*m][2
],x,y,z,num;
22 inline void insert(int& x,int
y)31 c[tmp][0]=c[last][0];c[tmp][1]=c[last][1
];32 sum[tmp]=sum[last]+1;33
}34 inline int query_max(int x,int y,int
z)else y=c[y][d],x=c[x][d],ans+=d?p[i]:0;42
}43return
ans;44}
45 inline int query_sum(int x,int y,int
z)53
return ans+sum[y]-sum[x];54}
55 inline int query_kth(int x,int y,int
z)64
return
ans;65}
66int
main()
77return0;
78 }
bzoj3261(可持久化字典樹)
description 給定乙個非負整數序列,初始長度為n。有m個操作,有以下兩種操作型別 1 ax 新增操作,表示在序列末尾新增乙個數x,序列的長度n 1。2 qlrx 詢問操作,你需要找到乙個位置p,滿足l p r,使得 a p xor a p 1 xor xor a n xor x 最大,輸出...
可持久化字典樹
以每個結點為根,建一顆字典樹 內容為1到i的值 這樣之後,做差後,即為一段區間或是一段路徑。可以發現,如果裸著建,不僅要消耗很多的時間,更是要消耗很多的空間。考慮以i為根的字典樹和以 i 1 為跟的字典樹的異同。可以發現,在當前以i為根的字典樹上減去a i 就是 i 1 的字典樹了。所以,我們可以將...
模板 可持久化字典樹
made by xiper updata time 2015 12 8 test status 使用前呼叫初始化函式 init 同時 root 0 0 struct trie persistent tree triesize 獲取字符集雜湊編號 必須在 0 lettersize 之內 inline ...