51nod1295
题解:
考虑到是异或,那么就是位运算
位运算会想到什么?当然是按位拆开
那么就变成了一个个的字符串
考虑了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的更多相关文章
- 51nod1295 XOR key(可持久化trie)
1295 XOR key题目来源: HackerRank基准时间限制:1.5 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 给出一个长度为N的正整数数组A,再给出Q个查询,每个查 ...
- 51nod1295 XOR key
第一次写可持久化trie指针版我... //Null 的正确姿势终于学会啦qaq... #include<cstdio> #include<cstring> #include& ...
- 51Nod--1295 XOR key (可持久化tire树)
题目链接 1295 XOR key 可持久化tire树模版题 数组一定要开够 不然数组不够的话就容易tle 吃了两次亏 #include<bits/stdc++.h> using name ...
- 51nod 1295 XOR key (可持久化Trie树)
1295 XOR key 题目来源: HackerRank 基准时间限制:1.5 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 给出一个长度为N的正整数数组A,再给出Q个查 ...
随机推荐
- Python3基础 if嵌套示例
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 动态规划模板2|LCS最长公共子序列
LCS最长公共子序列 模板代码: #include <iostream> #include <string.h> #include <string> using n ...
- ASP.NET Web API 2入门
1.全局配置 Web API 2之前是这样的配置的: protected void Application_Start() { //未实现特性路由 WebApiConfig.Register(Glob ...
- Ubuntu14.04 获取文件或者文件夹大小
[root@bogon ~]# stat -c%s install.log
- 安装 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 ...
- django不返回QuerySets的API
以下的方法不会返回QuerySets,但是作用非常强大,尤其是粗体显示的方法,需要背下来. 方法名 解释 get() 获取单个对象 create() 创建对象,无需save() get_or_crea ...
- Android JNI学习(三)——Java与Native相互调用
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Codeforces D - Ithea Plays With Chtholly
D - Ithea Plays With Chtholly 思路:考虑每个位置最多被替换c/2次 那么折半考虑,如果小于c/2,从左往右替换,大于c/2总右往左替换,只有小于这个数(从左往右)或者大于 ...
- 距离为K的节点 All Nodes Distance K in Binary Tree
2018-07-26 17:38:37 问题描述: 问题求解: 解法一. 第一种解法是使用Graph + BFS.换言之,就是将二叉树转化为无向图,然后在无向图中使用BFS进行层次遍历即可. 这种解法 ...
- 开关灯问题 BulbSwitch
2018-06-17 11:54:51 开关电灯问题是一个比较经典的趣味数学题,本文中主要介绍其中的一些常见情况. 一.Bulb Switch 问题描述: 问题求解: 初始状态:off, off, o ...