题面:最大异或和

代码:

 #include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=(3e5)+,maxm=maxn;
int N,M,A[maxn<<],rt[maxn<<],cnt=,X,L,R,ans;
char o[];
struct Trie{int cnt,son[];}tr[maxn*];
inline void Insert(int u,int x,int a,int t){
if(t<)return;
int w=(a&(<<t))>;
tr[x].son[!w]=tr[u].son[!w];
tr[x].son[w]=++cnt;
tr[tr[x].son[w]].cnt=tr[tr[u].son[w]].cnt+;
Insert(tr[u].son[w],tr[x].son[w],a,t-);
return;
}
inline void Query(int u,int x,int a,int t){
if(t<)return;
int w=(a&(<<t))>;
w=!w;
if(tr[tr[x].son[w]].cnt>tr[tr[u].son[w]].cnt){
ans+=<<t;
Query(tr[u].son[w],tr[x].son[w],a,t-);
}
else Query(tr[u].son[!w],tr[x].son[!w],a,t-);
return;
}
int main(){
scanf("%d%d",&N,&M);
Insert(,rt[]=++cnt,,);//
for(int i=;i<=N;i++){
scanf("%d",&X);
A[i]=A[i-]^X;
Insert(rt[i-],rt[i]=++cnt,A[i],);
}
while(M--){
scanf("%s",o);
if(o[]=='A'){
scanf("%d",&X);
N++;
A[N]=A[N-]^X;
Insert(rt[N-],rt[N]=++cnt,A[N],);
}
else{
scanf("%d%d%d",&L,&R,&X);
L--;R--;
ans=;
if(L->=)Query(rt[L-],rt[R],A[N]^X,);
else Query(,rt[R],A[N]^X,);
printf("%d\n",ans);
}
}
return ;
}

By:AlenaNuna

最新文章

  1. No.026:Remove Duplicates from Sorted Array
  2. SSH 整合及注意事项
  3. Maven(一)简介和基本安装使用
  4. 【英语】Bingo口语笔记(26) - Take系列
  5. 【破解三网】iphone5 国行 A1429
  6. 安装Ubuntu双系统系列——64位Ubuntu安装H3C的INode客户端
  7. 分享:根据svg节点对象类型和路径值转换坐标值
  8. 《Programming WPF》翻译 第8章 6.我们进行到哪里了?
  9. HDU 5002 Tree
  10. ICSharpCode.TextEditor如何自定义代码折叠和高亮
  11. 【Unity3D】Unity3D开发《我的世界》之六、创建地形(视频 + 源码)
  12. [原创]基于Zynq SDIO WIFI 2.4G/5G SotfAP STA
  13. 关闭mac的SIP + 一定有用的删除mac自带ABC的方法
  14. Luogu2264 树上游戏(点分治)
  15. Android Gradle插件(plugin)版本(version)与Gradle、SDK Build Tools版本关系
  16. 数据库设计和ER模型-------之ER模型的基本概念(第二章)
  17. bug -- android 7.0 popwindow显示位置异常情况解决
  18. 运维url收集
  19. Android源码-SignApk.java
  20. Python内置函数之repr()

热门文章

  1. Oracle JET Model 数据获取与使用
  2. 【mysql】一对一关系的理解,以及Navicat Premium怎么设置字段的唯一性(UNIQUE)?
  3. Git+Jenkins配置
  4. docker nginx ssl
  5. linux中从一台机器复制文件或目录到另一台机器上linux机器上
  6. css简介和属性
  7. Spring Task 任务调度(定时器)
  8. Luogu P5470 [NOI2019]序列
  9. C++编译器对属性的初始化检查远没有Java严格
  10. FFmpeg SDK开发模型之中的一个:解码器