题面:最大异或和

代码:

 #include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=(3e5)+,maxm=maxn;
int N,M,A[maxn<<],rt[maxn<<],cnt=,X,L,R,ans;
char o[];
struct Trie{int cnt,son[];}tr[maxn*];
inline void Insert(int u,int x,int a,int t){
if(t<)return;
int w=(a&(<<t))>;
tr[x].son[!w]=tr[u].son[!w];
tr[x].son[w]=++cnt;
tr[tr[x].son[w]].cnt=tr[tr[u].son[w]].cnt+;
Insert(tr[u].son[w],tr[x].son[w],a,t-);
return;
}
inline void Query(int u,int x,int a,int t){
if(t<)return;
int w=(a&(<<t))>;
w=!w;
if(tr[tr[x].son[w]].cnt>tr[tr[u].son[w]].cnt){
ans+=<<t;
Query(tr[u].son[w],tr[x].son[w],a,t-);
}
else Query(tr[u].son[!w],tr[x].son[!w],a,t-);
return;
}
int main(){
scanf("%d%d",&N,&M);
Insert(,rt[]=++cnt,,);//
for(int i=;i<=N;i++){
scanf("%d",&X);
A[i]=A[i-]^X;
Insert(rt[i-],rt[i]=++cnt,A[i],);
}
while(M--){
scanf("%s",o);
if(o[]=='A'){
scanf("%d",&X);
N++;
A[N]=A[N-]^X;
Insert(rt[N-],rt[N]=++cnt,A[N],);
}
else{
scanf("%d%d%d",&L,&R,&X);
L--;R--;
ans=;
if(L->=)Query(rt[L-],rt[R],A[N]^X,);
else Query(,rt[R],A[N]^X,);
printf("%d\n",ans);
}
}
return ;
}

By:AlenaNuna

可持久化+Trie || BZOJ 3261最大异或和 || Luogu P4735 最大异或和的更多相关文章

  1. luogu P4735 最大异或和

    嘟嘟嘟 省选竟然考了一个可持久化trie,就挑着我不会的考. 话说考场上我确实写了一个trie的做法,只不过一直没调出来然后就只剩暴力分了. 现在想想实在是太蠢了,明明对算法没有把握,却头脑一热在这题 ...

  2. [您有新的未分配科技点]可,可,可持久化!?------0-1Trie和可持久化Trie普及版讲解

    这一次,我们来了解普通Trie树的变种:0-1Trie以及在其基础上产生的可持久化Trie(其实,普通的Trie也可以可持久化,只是不太常见) 先简单介绍一下0-1Trie:一个0-1Trie节点只有 ...

  3. 【bzoj3166】[Heoi2013]Alo 可持久化Trie树+STL-set

    题目描述 Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG ,如名字所见,到处充满了数学的谜题.现在你拥有n颗宝石,每颗宝石 ...

  4. BZOJ 3261: 最大异或和( 可持久化trie )

    搞成前缀和然后就可以很方便地用可持久化trie维护了.时间复杂度O((N+M)*25) -------------------------------------------------------- ...

  5. bzoj 3261: 最大异或和 (可持久化trie树)

    3261: 最大异或和 Time Limit: 10 Sec  Memory Limit: 512 MB Description       给定一个非负整数序列 {a},初始长度为 N.       ...

  6. bzoj 3261 最大异或和【可持久化trie】

    因为在后面加数字又求后缀和太麻烦,所以xor[p...n]=xor[1...n]^xor[p-1...n]. 首先处理出来区间异或前缀和,对前缀和建trie树(在最前面放一棵0表示最开始的前缀和 然后 ...

  7. BZOJ 3261 最大异或和 可持久化Trie树

    题目大意:给定一个序列,提供下列操作: 1.在数组结尾插入一个数 2.给定l,r,x,求一个l<=p<=r,使x^a[p]^a[p+1]^...^a[n]最大 首先我们能够维护前缀和 然后 ...

  8. [BZOJ 4103] [Thu Summer Camp 2015] 异或运算 【可持久化Trie】

    题目链接:BZOJ - 4103 题目分析 THUSC滚粗之后一直没有写这道题,从来没写过可持久化Trie,发现其实和可持久化线段树都是一样的.嗯,有些东西就是明白得太晚. 首先Orz ZYF-ZYF ...

  9. BZOJ 3261: 最大异或和位置-贪心+可持久化01Trie树

    3261: 最大异或和 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 3519  Solved: 1493[Submit][Status][Discu ...

随机推荐

  1. jQuery file upload process queue

    在jquery.ui.widget.js中bridge处打上断点,查看instance内容 $.widget.bridge = function( name, object ) { var fullN ...

  2. springBoot 动态注入bean(bean的注入时机)

    springBoot 动态注入bean(bean的注入时机) 参考博客:https://blog.csdn.net/xcy1193068639/article/details/81517456

  3. Collector的使用

    一.Collector的引入 1)Collector的聚合作用前面已经使用过,将list.stream后的一系列操作之后再返回list. 2)Collector的引入,通过需求:将绿色的Apple放在 ...

  4. allure2生成html报告

    前言 allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面. 环境准备 1. ...

  5. Web UI自动化测试基础——元素定位(一)

    本篇文章整理了元素定位的基础知识——单个元素定位方式. 一.单个元素定位方式简介 1. find_element_by_id 通过元素的id属性进行定位.以百度首页为例,首先进入https://www ...

  6. WEB框架实战总结

    Django 在新一代的 Web框架 中非常出色 使用Python开发Web,最简单,原始和直接的办法是使用CGI标准,可以用WSGI接口 一.WSGI接口实现web页面 运行WSGI服务 我们先编写 ...

  7. 精读《What's new in javascript》

    1. 引言 本周精读的内容是:Google I/O 19. 2019 年 Google I/O 介绍了一些激动人心的 JS 新特性,这些特性有些已经被主流浏览器实现,并支持 polyfill,有些还在 ...

  8. 简述在Vue脚手架中,组件以及父子组件(非父子组件)之间的传值

    1.组件的定义 组成: template:包裹HTML模板片段(反映了数据与最终呈现给用户视图之间的映射关系) 只支持单个template标签: 支持lang配置多种模板语法: script:配置Vu ...

  9. js for 循环

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. c++ 加载库错误问题解决

    转载自:http://blog.csdn.net/sahusoft/article/details/7388617 一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如: ...