给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R)。求ALL 至 ARR 这R - L + 1个数中,与X 进行异或运算(Xor),得到的最大值是多少?Input第1行:2个数N, Q中间用空格分隔,分别表示数组的长度及查询的数量(1 <= N <= 50000, 1 <= Q <= 50000)。 
第2 - N+1行:每行1个数,对应数组A的元素(0 <= Aii <= 10^9)。 
第N+2 - N+Q+1行:每行3个数X, L, R,中间用空格分隔。(0 <= X <= 10^9,0 <= L <= R < N)Output输出共Q行,对应数组A的区间L,RL,R中的数与X进行异或运算,所能得到的最大值。Sample Input

15 8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
10 5 9
1023 6 6
33 4 7
182 4 9
181 0 12
5 9 14
99 7 8
33 9 13

Sample Output

13
1016
41
191
191
15
107
47

懒得说了。反正主席树写习惯了,持久化Trie也就直接写了。

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int a[maxn],rt[maxn],cnt;
struct node{
int l,r,val;
node(){ l=r=val=; }
node(int L,int R,int V):l(L),r(R),val(V){}
}s[maxn*];
void add(int &now,int pre,int x,int pos)
{
now=++cnt;
s[now]=node(s[pre].l,s[pre].r,s[pre].val+);
if(pos==-) return ;
if(((x>>pos)%)==) add(s[now].l,s[pre].l,x,pos-);
else add(s[now].r,s[pre].r,x,pos-);
}
int query(int now,int pre,int x)
{
int res=;
for(int i=;i>=;i--){
int t=(x>>i)%;
if(t==){
if(s[now].r&&s[s[now].r].val-s[s[pre].r].val>) now=s[now].r, pre=s[pre].r, res+=(<<i);
else now=s[now].l, pre=s[pre].l;
}
if(t==){
if(s[now].l&&s[s[now].l].val-s[s[pre].l].val>) now=s[now].l, pre=s[pre].l, res+=(<<i);
else now=s[now].r, pre=s[pre].r;
}
}
return res;
}
int main()
{
int N,Q,L,R,x,i;
scanf("%d%d",&N,&Q);
for(i=;i<=N;i++){
scanf("%d",&a[i]);
add(rt[i],rt[i-],a[i],);
}
for(i=;i<=Q;i++){
scanf("%d%d%d",&x,&L,&R);
int ans=query(rt[R+],rt[L],x);
printf("%d\n",ans);
}
return ;
}

51Nod - 1295:XOR key (可持久化Trie求区间最大异或)的更多相关文章

  1. [多校联考2019(Round 4 T1)][51nod 1295]Xor key(可持久化trie)

    [51nod 1295]Xor key(可持久化trie) 题面 给出一个长度为n的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R).求A[L] 至 A[R] ...

  2. 51nod 1295 XOR key | 可持久化Trie树

    51nod 1295 XOR key 这也是很久以前就想做的一道板子题了--学了一点可持久化之后我终于会做这道题了! 给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X ...

  3. 51nod 1295 XOR key (可持久化Trie树)

    1295 XOR key  题目来源: HackerRank 基准时间限制:1.5 秒 空间限制:262144 KB 分值: 160 难度:6级算法题   给出一个长度为N的正整数数组A,再给出Q个查 ...

  4. 51nod 1295 XOR key 可持久化01字典树

    题意 给出一个长度为\(n\)的正整数数组\(a\),再给出\(q\)个询问,每次询问给出3个数,\(L,R,X(L<=R)\).求\(a[L]\)至\(a[R]\)这\(R-L+1\)个数中, ...

  5. 51nod1295 XOR key(可持久化trie)

    1295 XOR key题目来源: HackerRank基准时间限制:1.5 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 给出一个长度为N的正整数数组A,再给出Q个查询,每个查 ...

  6. 51nod 1295 XOR key-区间异或最大值-可持久化01Trie树(模板)

    1295 XOR key 2 秒 262,144 KB 160 分 6 级题   给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X (L <= R).求A[L] ...

  7. BZOJ5338 [TJOI2018] Xor 【可持久化Trie树】【dfs序】

    题目分析: 很无聊的一道题目.首先区间内单点对应异或值的询问容易想到trie树.由于题目在树上进行,case1将路径分成两段,然后dfs的时候顺便可持久化trie树做询问.case2维护dfs序,对d ...

  8. 【可持久化Trie】bzoj3261 最大异或和

    对原序列取前缀异或值,变成pre[1...N],然后询问等价于求max{a[N]^x^pre[i]}(l-1<=i<=r-1). #include<cstdio> #defin ...

  9. 可持久化+Trie || BZOJ 3261最大异或和 || Luogu P4735 最大异或和

    题面:最大异或和 代码: #include<cstdio> #include<cstring> #include<iostream> using namespace ...

随机推荐

  1. weblogic日志管理

    服务器日志  每个 WebLogic Server 实例将来自子系统和应用程序的所有消息写入位于本地主机上的服务器日志文件.默认情况下,服务器日志文件位于服务器实例根目录下的 logs 目录中: 例如 ...

  2. install nfs and share file

    介绍一下NFS的安装,以及共享文件 NFS(Net File System),通过使用NFS,可以像使用本地文件一样访问远程文件. 它主要解决了数据共享的问题,可以备份容灾. 安装配置 1.以linu ...

  3. 以面试官的角度看strcpy函数

    一:笔试或者面试的总结 之 一 (1)在笔试或者面试中常常会被问道,strcpy  memmove memcpy 函数的实现.有时也会问你STL 中string的 split 和 trim的实现.有的 ...

  4. angular - 小结

    引入样式: 导入全局 - >styles.css 导入第三方 - > 在package.json配置,然后再 npm install 安装好以后,最后再angular.json里面的sty ...

  5. python(40)- 进程、线程、协程及IO模型

    一.操作系统概念 操作系统位于底层硬件与应用软件之间的一层.工作方式:向下管理硬件,向上提供接口. 操作系统进行进程切换:1.出现IO操作:2.固定时间. 固定时间很短,人感受不到.每一个应用层运行起 ...

  6. poj3211 Washing Clothes

    Description Dearboy was so busy recently that now he has piles of clothes to wash. Luckily, he has a ...

  7. caffe搭建以及初步学习--win7-vs2013-gtx650tiboost-cuda8.0-cifar10训练和测试-2-完整解决方案cifar10_full_solver.prototxt

    首先总结前一节的内容. 简单的讲,就是训练并测试了快速解决方案. 转换数据格式: convert_cifar_data.exe data/cifar10 examples/cifar10 lmdb 计 ...

  8. Android-可随意拖动的View

    http://blog.csdn.net/w8320273/article/details/8101687

  9. Mysql 存储过程使用游标

    -- 完整例子 CREATE PROCEDURE test BEGIN -- 定义参数    DECLARE _id INT; -- 定义游标    DECLARE no_more_products ...

  10. apktool + eclipse 动态调试APK

    用了会AndBug,尽管挺强大的可是作为习惯了OD.EDB作为动态调试工具的人,自然有些不习惯,于是乎寻求新的动态调试解决方式.但大多数都是NetBeans + apktool.想着还得多下一个IDE ...