BZOJ.5338.[TJOI2018]xor(可持久化Trie)
BZOJ LOJ 洛谷 惊了,18年了还有省选出模板题吗= = 做这题就是练模板的, 我就知道我忘的差不多了 询问一就用以DFS序为前缀得到的可持久化Trie做,询问二很经典的树上差分。 注意求询问二的时候,为了方便就先算一下LCA的答案。 //83472kb 3316ms #include <cstdio> #include <cctype> #include <algorithm> #define BIT 29 #define gc() getchar() #define MAXIN 300000 //#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++) typedef long long LL; const int N=1e5+5; int Enum,H[N],nxt[N<<1],to[N<<1],A[N],root1[N],root2[N],dfn[N],R[N],sz[N],dep[N],fa[N],son[N],top[N]; char IN[MAXIN],*SS=IN,*TT=IN; struct Trie { #define S N*(BIT+2)//+2! int tot,sz[S],son[S][2]; void Insert(int x,int y,int v)