题解:

考虑到是异或,那么就是位运算

位运算会想到什么?当然是按位拆开

那么就变成了一个个的字符串

考虑了trie

可是貌似有多个问题

那么就用可持久化trie!

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=,M=,L=;
int tot,n,q,son[M][],sum[M],root[N],bz[L+];
int read()
{
int x=;char c;
for (c=getchar();c<''||c>'';c=getchar());
for (;c>=''&&c<='';c=getchar())x=x*+c-;
return x;
}
void insert(int v,int &x,int y)
{
x=++tot;
memcpy(son[x],son[y],);
sum[x]=sum[y]+;
if (!v) return;
insert(v-,son[x][bz[v-]],son[y][bz[v-]]);
}
int find(int v,int x,int y)
{
if (!v) return ;
if (sum[son[x][bz[v-]]]>sum[son[y][bz[v-]]])
return find(v-,son[x][bz[v-]],son[y][bz[v-]])+(<<(v-));
return find(v-,son[x][-bz[v-]],son[y][-bz[v-]]);
}
int main()
{
n=read();q=read();
for (int i=;i<=n;i++)
{
int x=read();
for (int j=;j<L;x/=)bz[j++]=x%;
insert(L,root[i],root[i-]);
}
while (q--)
{
int x=read(),l=read(),r=read();
for (int j=;j<L;x/=)bz[j++]=-(x%);
printf("%d\n",find(L,root[r+],root[l]));
}
}

51nod1295的更多相关文章

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

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

  2. 51nod1295 XOR key

    第一次写可持久化trie指针版我... //Null 的正确姿势终于学会啦qaq... #include<cstdio> #include<cstring> #include& ...

  3. 51Nod--1295 XOR key (可持久化tire树)

    题目链接 1295 XOR key 可持久化tire树模版题 数组一定要开够 不然数组不够的话就容易tle 吃了两次亏 #include<bits/stdc++.h> using name ...

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

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

随机推荐

  1. ubuntu16.04下firefly rk3288的编译安卓4.4

    一.背景 OS: ubuntu 16.04 二.配置交叉编译环境 2.1 安装openjdk sudo apt-get install openjdk-7-jdk 2.2 使在同一台机器上可以编译an ...

  2. HDU1043 Eight(八数码:逆向BFS打表+康托展开)题解

    Eight Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. 06_Flume_interceptor_时间戳+Host

    1.目标场景 2.flume agent配置文件 # define agent name, source/sink/channel name a1.sources = r1 a1.sinks = k1 ...

  4. hdu 1370 || poj 1006 简单的中国剩余定理或者暴力

    Biorhythms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Probl ...

  5. signal_windows

    1.Qt532(vs2010 opengl) // ZC: windows signal: // http://blog.csdn.net/mergerly/article/details/79521 ...

  6. Qt4_WebKit_例子

    1. 安装包:qt-opensource-windows-x86-vs2010-4.8.6.exe Qt4已经编译好的文件:E:\ZC_software_installDir\Qt_4.8.6\dem ...

  7. 【Golang】字符串首字母大小写转化

    写在前面 在自动化过程中,我们用得最多的可能就是字符串的处理,熟悉Python的都知道在Python中要让一个字符串的首字母大写直接用capitalize就可以了,但是同样的事情在Golang中没有这 ...

  8. Lua和C++交互 学习记录之一:C++嵌入脚本

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  9. Java注解的使用,类似于C#的Attribute

    1.定义注解,代码如下: import java.lang.annotation.*; /** * 定义注解类,用于注解某个类或方法 * * @author Administrator * */ @T ...

  10. smarty课程---smarty3的安装和使用

    smarty课程---smarty3的安装和使用 一.总结 一句话总结:smarty 是什么,就不多说了,用过php,接触过php的人都对smarty 再熟悉不过了.它是一个很强大的代码分离软件,作为 ...