[51nod 1295]Xor key(可持久化trie)

题面

给出一个长度为n的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R)。求A[L] 至 A[R] 这R - L + 1个数中,与X 进行异或运算(Xor),得到的最大值是多少?

分析

可持久化trie裸题

代码

#include<iostream>
#include<cstdio>
#define maxb 31
#define maxn 200000
#define maxs 6400000
using namespace std;
inline void qread(int &x){
x=0;
int sign=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') sign=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
x=x*sign;
}
inline void qprint(int x){
if(x<0){
putchar('-');
qprint(-x);
}else if(x==0){
putchar('0');
return;
}else{
if(x>=10) qprint(x/10);
putchar('0'+x%10);
}
} int n,q;
int a[maxn+5]; struct persist_trie{
int sz[maxs+5];
int root[maxn+5];
int son[maxs+5][2];
int ptr=0;
void insert(int pos,int val){
int now=root[pos]=++ptr;
int last=root[pos-1];
for(int i=maxb;i>=0;i--){
sz[now]=sz[last]+1;
int k=(val>>i)&1;
son[now][k]=++ptr;
son[now][k^1]=son[last][k^1];
now=son[now][k];
last=son[last][k];
}
sz[now]=sz[last]+1;
}
int query(int l,int r,int val){
int now=root[r];
int last=root[l-1];
int ans=0;
for(int i=maxb;i>=0;i--){
int k=(val>>i)&1;
int lsz=sz[son[now][k^1]]-sz[son[last][k^1]];
if(lsz){
now=son[now][k^1];
last=son[last][k^1];
ans=ans*2+1;
}else{
now=son[now][k];
last=son[last][k];
ans=ans*2;
}
}
return ans;
}
}T; int main(){
// freopen("1.in","r",stdin);
// freopen("1.ans","w",stdout);
int l,r,x;
qread(n);
qread(q);
for(int i=1;i<=n;i++){
qread(a[i]);
T.insert(i,a[i]);
}
for(int i=1;i<=q;i++){
qread(x);
qread(l);
qread(r);
l++;
r++;
qprint(T.query(l,r,x));
putchar('\n');
}
}

最新文章

  1. [Network Analysis] 复杂网络分析总结
  2. css使absolute相对于父容器进行定位而不是以body(为什么绝对定位(absolute)的父级元素必须是相对定位(relative))
  3. [Asp.net 5] Options-配置文件之后的配置
  4. Windows 2003 EE升级服务错误号:0x8DDD0018 解决办法
  5. import random 模块导入
  6. 铭飞MCMS内容管理系统完整开源版J2EE代码
  7. Oracle Flashback Technologies - 闪回数据库
  8. 【css基础】垂直外边距的合并
  9. nodejs爬虫系统
  10. php过滤提交数据 防止sql注入攻击
  11. PHP基础学习
  12. jQuery Ajax post多个值传参
  13. Metaphor of quotient space
  14. 程序员50题(JS版本)(五)
  15. Breastcancer社区评论下载
  16. java中常用的进制转换
  17. 大数据处理算法--Bloom Filter布隆过滤
  18. Lua中的模块与module函数详解
  19. java 自定义异常的回顾
  20. 关于Unity3d的Quaternion.Slerp的学习

热门文章

  1. 对Canvas的研究
  2. jquery 3.1 tets
  3. sqli-labs(21)
  4. Spring MVC过滤器HiddenHttpMethodFilter
  5. vue 全局引用jq(打包后可能会遇到的问题)
  6. 20165218 《网络对抗技术》Exp6 信息收集与漏洞扫描
  7. 2018-2019-2 网络对抗技术 20165220 Exp 8 Web基础
  8. HDU 2243 ( Trie图 矩阵构造幂和 )
  9. maven 插件的应用
  10. Promise【其他模式】