BZOJ3261 最大异或和 (可持久化Trie)
const maxn=;
len=;
var x,y,z,n,m,tot,lx,i:longint;
sum:array[..maxn] of longint;
rt:array[..maxn] of longint;
time,l,r:array[..maxn*len] of longint;
ch:char;
procedure insert(x:longint);inline;
var p,i:longint;
begin
rt[lx]:=tot+; p:=rt[lx-];
for i:=len downto do
begin
inc(tot); l[tot]:=l[p]; r[tot]:=r[p]; time[tot]:=time[p]+;
if (x and (<<(i-))) > then
begin
p:=r[p];
r[tot]:=tot+;
end else
begin
p:=l[p];
l[tot]:=tot+;
end;
end;
inc(tot); l[tot]:=l[p]; r[tot]:=r[p]; time[tot]:=time[p]+;
end;
function query(a,b,x:longint):longint;inline;
var ans,i:longint;
begin
ans:=;
for i:=len downto do
begin
if (x and (<<(i-))) > then
begin
if time[l[b]]>time[l[a]] then
begin
a:=l[a]; b:=l[b];
ans:=ans+<<(i-);
end
else
begin
a:=r[a]; b:=r[b];
end
end else
begin
if time[r[b]]>time[r[a]] then
begin
a:=r[a]; b:=r[b];
ans:=ans+<<(i-);
end
else
begin
a:=l[a]; b:=l[b];
end
end;
end;
exit(ans);
end;
begin
readln(n,m);
sum[]:=; lx:=;
insert();
for i:= to n do
begin
read(x);
inc(lx);
sum[lx]:=x xor sum[lx-];
insert(sum[lx]);
end;
readln;
for i:= to m do
begin
read(ch);
if ch='A' then
begin
readln(x);
inc(lx);
sum[lx]:=x xor sum[lx-];
insert(sum[lx]);
end else
begin
readln(x,y,z);
writeln(query(rt[x-],rt[y],z xor sum[lx]));
end;
end;
end.
BZOJ3261 最大异或和 (可持久化Trie)的更多相关文章
- bzoj3261: 最大异或和 可持久化trie
题意:给定一个非负整数序列{a},初始长度为N. 有M个操作,有以下两种操作类型: 1.Ax:添加操作,表示在序列末尾添加一个数x,序列的长度N+1. 2.Qlrx:询问操作,你需要找到一个位置p,满 ...
- BZOJ3261: 最大异或和(可持久化trie树)
题意 题目链接 Sol 设\(sum[i]\)表示\(1 - i\)的异或和 首先把每个询问的\(x \oplus sum[n]\)就变成了询问前缀最大值 可持久化Trie树维护前缀xor,建树的时候 ...
- 【bzoj3261】最大异或和 可持久化Trie树
题目描述 给定一个非负整数序列 {a},初始长度为 N. 有M个操作,有以下两种操作类型:1.A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N+1.2.Q l r x:询问操 ...
- BZOJ 3261: 最大异或和( 可持久化trie )
搞成前缀和然后就可以很方便地用可持久化trie维护了.时间复杂度O((N+M)*25) -------------------------------------------------------- ...
- [十二省联考2019]异或粽子——可持久化trie树+堆
题目链接: [十二省联考2019]异或粽子 求前$k$大异或区间,可以发现$k$比较小,我们考虑找出每个区间. 为了快速得到一个区间的异或和,将原序列做前缀异或和. 对于每个点作为右端点时,我们维护出 ...
- 洛谷.5283.[十二省联考2019]异或粽子(可持久化Trie 堆)
LOJ 洛谷 考场上都拍上了,8:50才发现我读错了题=-= 两天都读错题...醉惹... \(Solution1\) 先求一遍前缀异或和. 假设左端点是\(i\),那么我们要在\([i,n]\)中找 ...
- 【xsy1147】 异或(xor) 可持久化trie
我的脑回路可能比较奇怪. 我们对这些询问离线,将所得序列${a}$的后缀和建$n$棵可持久化$trie$. 对于一组询问$(l,r,x)$,我们在主席树上询问第$l$棵树$-$第r$+1$棵树中与$s ...
- [BZOJ4103][Thu Summer Camp 2015]异或运算 可持久化Trie树
4103: [Thu Summer Camp 2015]异或运算 Time Limit: 20 Sec Memory Limit: 512 MB Description 给定长度为n的数列X={x1 ...
- 【bzoj3689】异或之 可持久化Trie树+堆
题目描述 给定n个非负整数A[1], A[2], ……, A[n].对于每对(i, j)满足1 <= i < j <= n,得到一个新的数A[i] xor A[j],这样共有n*(n ...
- BZOJ 3261 最大异或和 可持久化Trie树
题目大意:给定一个序列,提供下列操作: 1.在数组结尾插入一个数 2.给定l,r,x,求一个l<=p<=r,使x^a[p]^a[p+1]^...^a[n]最大 首先我们能够维护前缀和 然后 ...
随机推荐
- iOS 10 消息推送(UserNotifications)秘籍总结(二)
背景 上一篇博客iOS 10 消息推送(UserNotifications)秘籍总结(一)发布后被 简书编辑推荐至首页,这着实让我受宠若惊啊.可是好事不长,后面发生了让我伤心欲绝的事,我的女朋友不要我 ...
- SAP资产变动明细
*&---------------------------------------------------------------------* *& Report ZFIR027 * ...
- chkconfig命令
chkconfig --list #列出系统所有的服务启动情况chkconfig --add xxx #增加xxx服务chkconfig --de ...
- PHP+mysql常用类库
<?php /** * @title: Ekcms mysql类库 * @version: 1.0 * @author: perry <perry@1kyou.com> * @pub ...
- 使用BroadcastReceiver监听系统接收的短信
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Inten ...
- 枚举IoTimer
/*************************************************************************************** * AUTHOR : ...
- 判断子元素(or属性)是否存在
if(typeof($("#aid").attr("rel"))=="undefined") 即可
- Halcon 10.0:Hobject图像转CBitmap
void HImage2CBitmap(Hobject pImage,CBitmap *wImage) { char lpcsType[MAX_STRING]; Hlong lPointer,widt ...
- php头像上传并裁剪支持3个尺寸
源码下载
- C#如何以管理员身份运行程序
在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况 ...