题解:

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

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

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

考虑了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. Python3基础 if嵌套示例

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. 动态规划模板2|LCS最长公共子序列

    LCS最长公共子序列 模板代码: #include <iostream> #include <string.h> #include <string> using n ...

  3. ASP.NET Web API 2入门

    1.全局配置 Web API 2之前是这样的配置的: protected void Application_Start() { //未实现特性路由 WebApiConfig.Register(Glob ...

  4. Ubuntu14.04 获取文件或者文件夹大小

    [root@bogon ~]# stat -c%s install.log

  5. 安装 mysql8.0.13 (Ubuntu 16.04 desktop amd64)

    1.下载mysql deb https://dev.mysql.com/downloads/mysql/ #移动到/usr/local/src/目录,解压 sudo mv mysql-server_8 ...

  6. django不返回QuerySets的API

    以下的方法不会返回QuerySets,但是作用非常强大,尤其是粗体显示的方法,需要背下来. 方法名 解释 get() 获取单个对象 create() 创建对象,无需save() get_or_crea ...

  7. Android JNI学习(三)——Java与Native相互调用

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  8. Codeforces D - Ithea Plays With Chtholly

    D - Ithea Plays With Chtholly 思路:考虑每个位置最多被替换c/2次 那么折半考虑,如果小于c/2,从左往右替换,大于c/2总右往左替换,只有小于这个数(从左往右)或者大于 ...

  9. 距离为K的节点 All Nodes Distance K in Binary Tree

    2018-07-26 17:38:37 问题描述: 问题求解: 解法一. 第一种解法是使用Graph + BFS.换言之,就是将二叉树转化为无向图,然后在无向图中使用BFS进行层次遍历即可. 这种解法 ...

  10. 开关灯问题 BulbSwitch

    2018-06-17 11:54:51 开关电灯问题是一个比较经典的趣味数学题,本文中主要介绍其中的一些常见情况. 一.Bulb Switch 问题描述: 问题求解: 初始状态:off, off, o ...