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个查 ...
随机推荐
- java.lang.NoClassDefFoundError错误
根据前文,很明显NoClassDefFoundError的错误是因为在运行时类加载器在classpath下找不到需要加载的类,所以我们需要把对应的类加载到classpath中,或者检查为什么类在cla ...
- Oracleグラントについて
権限 権限とはデータベースにログインしたユーザに許可する操作の事です. 例えば.更新や削除は行って欲しくないというユーザには.検索の権限のみ与えるというような使い方をします. Oracleの権限には「 ...
- Go第二篇之基本语法总结
Go语言标识符 标识符以字母或下划线开头,大小写敏感 _是特殊标识符,用来忽略结果 Go语言变量的声明 变量(Variable)的功能是存储用户的数据.不同的逻辑有不同的对象类型,也就有不同的变量类型 ...
- Springboot2.x 拦截器
一,单个拦截器,实现接口 HandlerInterceptor @Component public class MyInterceptor1 implements HandlerIntercepto ...
- 【lrzsz 】Linux安装上传下载功能
1.在线安装服务 # yum -y install lrzsz 2.上传 rz 3.下载 sz
- v-model双向数据绑定
v-model双向数据绑定的修饰符 .lazy:失去焦点时数据进行双向的绑定 v-model.lazy=”message ” .number:前面输入数字,后面接着字母自动去除掉.v-model. n ...
- NS3 Ptr<Rocket> 与 TcpRocket 的一个小问题
前因:ns3网络仿真 实验进行到很关键的一步,我尝试进行了代码的编写(还没有添加Traceback的函数),如下: #include "ns3/core-module.h" #in ...
- SVN基本命令总结
1.svn add [path] 预定添加文件或者目录到版本库,这些add的文件会在下一次提交文件时同步到版本服务器. 2.svn commit [path] 提交文件到版本服务器. 3.svn co ...
- pyHook监听用户鼠标、键盘事件
一.代码部分:获取用户输入信息,并与截图一起保存到XX目录下 # -*- coding: utf-8 -*- # import pythoncom import pyHook impor ...
- Codeforces 388A - Fox and Box Accumulation
388A - Fox and Box Accumulation 思路: 从小到大贪心模拟. 代码: #include<bits/stdc++.h> using namespace std; ...