链接:点击打开链接

题意:

给定一个非负整数序列 {a},初始长度为n。

有 m 个操作,有以下两种操作类型:

A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 n+1。
Q l r x:询问操作,你需要找到一个位置 p,满足,使得: 最大,输出最大是多少。

代码:

#include<bits/stdc++.h>
using namespace std;const int siz=70*300005;
int num_tr,node;
int rk[siz],a[siz],tr[siz][2];
void in(int x){int i,op,rt;rt=rk[num_tr];rk[++num_tr]=++node;for(i=24;i>=0;i--){op=(x>>i)&1;a[node]=a[rt]+1;tr[node][op]=node+1;tr[node][!op]=tr[rt][!op];rt=tr[rt][op];++node;}a[node]=a[rt]+1;
}
int cal(int l,int r,int x){int i,op,ans=0;for(i=24;i>=0;i--){op=(x>>i)&1;if(a[tr[r][!op]]-a[tr[l][!op]]>0){ans=(ans<<1)|1;l=tr[l][!op];r=tr[r][!op];}else{ans<<=1;l=tr[l][op];r=tr[r][op];}}return ans;
}
int main(){                                     //可持久化字典树,跟主席树其实是一个意思char c;                                     //原问题转换一下其实就是n个数中找一个与int n,m,i,j,u,v,w,sum;                      //已知的数异或的最大值,直接在trie树上贪心scanf("%d%d",&n,&m);                        sum=num_tr=node=0;in(0);for(i=1;i<=n;i++){scanf("%d",&u);sum^=u;in(sum);}while(m--){getchar();scanf("%c",&c);if(c=='A'){scanf("%d",&u);sum^=u;in(sum);}else{scanf("%d%d%d",&u,&v,&w);           //最后询问要注意一下是哪两颗树printf("%d\n",cal(rk[u-1],rk[v],sum^w));}}return 0;
}

Luogu P4735(可持久化字典树)相关推荐

  1. [十二省联考 2019] 异或粽子(可持久化字典树 + 二叉堆)

    problem luogu-P5283 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 nnn 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 111 到 nn ...

  2. P4735 最大异或和(可持久化字典树)

    题目链接:P4735 最大异或和 Description 给定一个非负整数序列 {a},初始长度为 N. 有   M个操作,有以下两种操作类型: 1 .A x:添加操作,表示在序列末尾添加一个数 x, ...

  3. 中石油训练赛 - 腿部挂件(可持久化字典树)

    题目描述 Jim是一个热爱打游戏的小伙子,可惜他的游戏水平不太行,以至于经常在游戏里被别人欺负.而且Jim不仅游戏玩的菜,他还很爱喷人,但是由于自己的垃圾操作,他又喷不过别人.为了改善这种局面,Jim ...

  4. 可持久化-可持久化字典树

    可持久化-Trie可持久化 2021年8月2日 可持久化干什么? 可持久化,就是记录每次更改的版本,以便于后续使用从前的版本.对于字典树,就是对每次加入的字符串按次进行记录. 算法原理 建树时,每次新 ...

  5. P4735 最大异或和(可持久化字典树 ? 主席树)

    异或满足可减性,所以可以维护前缀和,然后 a[p] xor a[p + 1] xor ... xor a[n] xor = s[p - 1] xor s[n] xor然后就只要维护s[].添加很好维护 ...

  6. [(可持久化)字典树 优化建图][2-SAT] LOJ#6036. 雅礼集训 2017 Day4. 编码

    老早以前的坑了 貌似好多地方都有这个题 因为每个串都只有一个问号,问号可取0可取1,这就是一个经典的2-SAT模型 但是直接做的话,边数是n2n^2级别的,不过因为是01串,可以用可持久化字典树优化建 ...

  7. HDU - 4757 Tree(LCA+可持久化trie树)

    题目链接:点击查看 题目大意:给出一棵有有n个节点的树,每个点都有一个权值,现在给出m个查询,每次查询的形式为:x,y,z,求出从点x到点y的路径上任选一点,使其与z的异或值最大,输出异或值 题目分析 ...

  8. POJ - 3764 The xor-longest Path(字典树性质)

    题目链接:点击查看 题目大意:给出一棵树,每条边上都有一个边权,现在问能否选择两个点,使得其间路径上的异或和最大 题目分析:直接求肯定是比较复杂的,我们可以转换一下题意,因为是一棵树,所以n个点肯定互 ...

  9. BZOJ 3483 SGU505 Prefixes and suffixes(字典树+可持久化线段树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3483 [题目大意] 给出一些串,同时给出m对前缀后缀,询问有多少串满足给出的前缀后缀模 ...

最新文章

  1. 微信js sdk动态引用
  2. 引用数据类型的深拷贝
  3. C语言实现queue队列的算法(附完整源码)
  4. 电脑小米路由器设置虚拟服务器,小米路由器在Win7系统中设置网络映射教程
  5. jOOQ,H2和Maven入门
  6. LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
  7. 进程控制(二)与linux下的自有服务
  8. ProgressBar--进度条
  9. 信息学奥赛一本通(1206:放苹果)
  10. Linux——vim编辑器详解
  11. 2021年已经过去了4天,创业者、负债累累而希望通过再创业实现东山再起者,你们准备的怎么样了?
  12. react 动态修改路由_react动态路由以及获取动态路由
  13. 9本R语言书,从入门到进阶都在这了
  14. 失眠就吃安眠药真的好吗?好心情送你沾枕到天亮的诀窍
  15. L1-061 新胖子公式 (10 分)C语言
  16. 亿级视频内容如何实时更新?
  17. 黑苹果2k显示器开启hidpi_关于黑苹果固态硬盘4K对齐和Trim的开启
  18. c++贪吃蛇源代码 完整版
  19. IM即时通讯聊天软件1.0
  20. 打开计算机任务栏有桌面没,开机后桌面没有图标任务栏无显示怎么解决

热门文章

  1. R语言学习丨散点图怎么画?绘图基本知识与常用函数
  2. javaWeb用户注册之用户名、密码、邮箱验证例题
  3. 中国“计算机天才”魏延政:入职华为年薪百万,抗癌5年41岁去世
  4. Tina理财笔记(七)——买房训练营答疑汇总
  5. python unicode转字符串_Python: 在Unicode和普通字符串之间转换
  6. 计算机映像缺失磁盘如何修复,Win10安装会遇到的问题汇总及解决方法
  7. 关于 z-Stack MT层的使用
  8. 22套精致的用户界面 PSD 源文件素材
  9. 《人月神话》一句话总结各章核心观点
  10. RS导出Excel交叉表角对应的列占用多列问题