bzoj4546 可持久化字典樹

2021-08-01 16:46:24 字數 942 閱讀 2657

可持久化字典樹模板題。。。

把每個數轉換成二進位制建立字典樹,按照下標建立可持久化字典樹,存一下子樹中點的個數就行了。

**:

1 #include2 #include3 #include4 #include5

using

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 }

bzoj4546

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