我认为 可持久化Trie 主要指 可持久化01Trie

如洛谷P4735

将每个数的异或前缀和转化为二进制,添加前缀0至相同位数,然后从最高位开始插入,类似主席树,每一层都对需要更新的点加入一个新的点,同时统计所有在\(i\)之前的数该位为\(1/0\)的总个数(即siz)。

每次查询,从根节点开始,贪心地选与这一位相反的值,同时用第\(r\)个版本减去第\(l-1\)个版本(类似主席树)。

代码:

#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=getchar();
while(!isdigit(ch)) ch=getchar();
int ans=0;
while(isdigit(ch))
{
ans=ans*10+ch-48;
ch=getchar();
}
return ans;
}
#define N 300005
struct Trie
{
struct Node
{
int ch[2];
int siz;
};
Node t[N*48];
int ncnt;
int rcnt,rot[N*2];
void insert(int x,int rt)
{
rt=rot[rt];
int cur=rot[++rcnt]=++ncnt;
for(int i=24;i>=0;i--)
{
int tmp=(x>>i)&1;
t[cur].ch[tmp]=++ncnt;
t[cur].ch[tmp^1]=t[rt].ch[tmp^1];
t[cur].siz=t[rt].siz+1;
cur=t[cur].ch[tmp];
rt=t[rt].ch[tmp];
}
t[cur].siz=t[rt].siz+1;
}
int query(int x,int l,int r)
{
// printf("%d %d %d\n",x,l,r);
int ans=0;
int rtl=rot[l-1];
int rtr=rot[r];
for(int i=24;i>=0;i--)
{
int tmp=(x>>i)&1;
if(t[t[rtr].ch[tmp^1]].siz-t[t[rtl].ch[tmp^1]].siz>0)
{
// printf("** %d",i);
ans^=(1<<i);
rtr=t[rtr].ch[tmp^1];
rtl=t[rtl].ch[tmp^1];
}
else
{
rtr=t[rtr].ch[tmp];
rtl=t[rtl].ch[tmp];
}
}
return ans;
}
};
Trie tr;
int main()
{
int n,m;
cin>>n>>m;
int x=0;
tr.insert(0,0);
for(int i=1;i<=n;i++)
{
x^=read();
tr.insert(x,i);
}
char opt[3];
for(int i=1;i<=m;i++)
{
scanf("%s",&opt);
if(opt[0]=='A')
{
x^=read();
tr.insert(x,tr.rcnt);
}
else
{
int l,r,xx;
l=read(),r=read(),xx=read();
printf("%d\n",tr.query(xx^x,l,r));
}
}
return 0;
}

关于可持久化Trie的更多相关文章

  1. HDU 4757 Tree(可持久化Trie+Tarjan离线LCA)

    Tree Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others) Total Su ...

  2. 【BZOJ4260】 Codechef REBXOR 可持久化Trie

    看到异或就去想前缀和(⊙o⊙) 这个就是正反做一遍最大异或和更新答案 最大异或就是很经典的可持久化Trie,从高到低贪心 WA: val&(1<<(base-1))得到的并不直接是 ...

  3. 可持久化Trie & 可持久化平衡树 专题练习

    [xsy1629]可持久化序列 - 可持久化平衡树 http://www.cnblogs.com/Sdchr/p/6258827.html [bzoj4260]REBXOR - Trie 事实上只是一 ...

  4. HDU 4757 Tree(可持久化trie)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4757 题意:给出一棵树,节点有权值.每次询问x到y的路径上与z抑或的最大值. 思路:可持久化trie. ...

  5. 可持久化trie 学习总结

    QAQ 以前一直觉得可持久化trie很难,今天强行写了一发觉得还是蛮简单的嘛 自己的模板是自己手写的,写了几道题目并没有出过错误 THUSC的第二题的解法五貌似就是可持久化trie,时间复杂度O(60 ...

  6. [BZOJ 4103] [Thu Summer Camp 2015] 异或运算 【可持久化Trie】

    题目链接:BZOJ - 4103 题目分析 THUSC滚粗之后一直没有写这道题,从来没写过可持久化Trie,发现其实和可持久化线段树都是一样的.嗯,有些东西就是明白得太晚. 首先Orz ZYF-ZYF ...

  7. bzoj 2741: 【FOTILE模拟赛】L 分塊+可持久化trie

    2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1116  Solved: 292[Submit][Status] ...

  8. bzoj 2741 分块+可持久化trie

    多个询问l,r,求所有子区间异或和中最大是多少 强制在线 做法: 分块+可持久化trie 1.对于每块的左端点i,预处理出i到任意一个j,()i,j)间所有子区间异或和中最大为多少,复杂度O(\(n\ ...

  9. 【BZOJ2741】【块状链表+可持久化trie】FOTILE模拟赛L

    Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 .. ...

  10. HDU4757--Tree 可持久化trie + LCA

    题意:n个点的树,Q次询问,询问u-v路径上的点的权值与z抑或的最大值. 先考虑,在一个区间上的问题,可以先建一个可持久化的Trie,然后每次询问,就和线段树的操作差不多,从最高位开始考虑选1还是选0 ...

随机推荐

  1. Python学习笔记011

    多行注释 '''字符串 ''' 除了用来多行注释还可以用来打印多行

  2. ES5 Object.assign 低版本浏览器内核兼容问题

    var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { ...

  3. ‘A’ = N’A’ , will not kill index seek in sqlserver version above 2014 anymore

    Thanks to The advisor show us that we can get different behavior when we use condition , ='20000' or ...

  4. 122、Java面向对象之直接输出对象本身

    01.代码如下: package TIANPAN; class Book { public void print() { // 调用print()方法的对象就是当前对象,this就自动与此对象指向同一 ...

  5. 302重定向之后,session中存储的值没了

    302重定向之后,session中存储的值没了

  6. RCTF crypto100(1)

    题面是一个文件,里面是用base64加密的字符串,如下所示: IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI ...

  7. pug

    https://github.com/pugjs/pug pug模板使用https://www.cnblogs.com/gudi/p/8080736.html

  8. django+celery+ RabbitMQ实现异步任务实例

    背景   django要是针对上传文件等需要异步操作的场景时,celery是一个非常不错的选择.笔者的项目就是使用了这个组合,这里就做一个备忘吧. 安装RabbitMQ   这个安装及使用我已经在前一 ...

  9. Vue 中使用Ajax请求

    Vue 项目中常用的 2 个 ajax 库 (一)vue-resource vue 插件, 非官方库,vue1.x 使用广泛 vue-resource 的使用 在线文档   https://githu ...

  10. eclipse console 查看全部的输出

    参考:https://blog.csdn.net/thatluck/article/details/52080736