题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4260

用 Trie 树可以找出前缀异或的最大值和后缀异或的最大值,拼起来即可;

注意要先加入一个0,表示区间左端点在 0 或右端点在 n+1;

竟然1A了!感动。

——然后发现3个月前做过!!!... https://www.cnblogs.com/Zinn/p/9301536.html

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int const xn=4e5+5,mx=30;
int n,cnt,a[xn],pr[xn],sc[xn],c[xn*mx][2],bin[mx+5];
int rd()
{int ret=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=0; ch=getchar();}while(ch>='0'&&ch<='9')ret=(ret<<3)+(ret<<1)+ch-'0',ch=getchar();return f?ret:-ret;
}
void init()
{bin[0]=1;for(int i=1;i<=mx;i++)bin[i]=bin[i-1]*2;
}
void add(int x)
{int nw=0;for(int i=mx;i>=0;i--){bool d=(x&bin[i]);if(!c[nw][d])c[nw][d]=++cnt; nw=c[nw][d];}
}
int query(int x)
{int nw=0,ret=0;for(int i=mx;i>=0;i--){bool d=!(x&bin[i]);if(c[nw][d])nw=c[nw][d],ret+=bin[i];else nw=c[nw][!d];}return ret;
}
int main()
{n=rd(); init(); add(0);//
  for(int i=1,x,s=0;i<=n;i++){x=rd(); a[i]=x; s^=x;pr[i]=max(pr[i-1],query(s)); add(s);}cnt=0; memset(c,0,sizeof c); add(0);for(int i=n,s=0;i;i--){s^=a[i];sc[i]=max(sc[i+1],query(s)); add(s);}int ans=0;for(int i=1;i<n;i++)ans=max(ans,pr[i]+sc[i+1]);printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/Zinn/p/9804379.html

bzoj 4260 REBXOR —— Trie树相关推荐

  1. [Bzoj4260]Codechef REBXOR(trie树)

    4260: Codechef REBXOR Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 1534  Solved: 669 [Submit][St ...

  2. BZOJ 1590.Secret Message 秘密信息(Trie树) [Usaco2008 Dec]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x Weblink https://hydro.ac/d/bzoj/p/1590 P ...

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

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

  4. bzoj 4260: Codechef REBXOR

    Description Solution 记录前缀答案和后缀答案,然后枚举断点合并即可 求出以每一个结尾的最大异或的段,相当于求两个前缀异或值的最大值,用trie树贪心即可 #include<b ...

  5. BZOJ #3166. [Heoi2013]Alo(可持久化trie树+set)

    #3166. [Heoi2013]Alo description solution code BZOJ3166 description Welcome to ALO ( Arithmetic and ...

  6. [学习笔记]我们追过的神奇异或(Trie树系列)

    引言 刚学了\(Trie\)树,写篇博客巩固一下. 题目 首先安利一发\(Trie\)树模板 1.Phone List 2.The XOR largest pair 3.The xor-longest ...

  7. usaco Cowxor (trie 树)

    没想到trie树还可以用在这上面,厉害厉害. [分析]这是字母树的经典应用.首先因为是求xor的最大值,可以用前缀和计算xor值,然后n^2枚举即可. [cpp] view plaincopy for ...

  8. 字符串匹配算法 -- AC自动机 基于Trie树的高效的敏感词过滤算法

    文章目录 1. 算法背景 2. AC自动机实现原理 2.1 构建失败指针 2.2 依赖失败指针过滤敏感词 3. 复杂度及完整代码 1. 算法背景 之前介绍过单模式串匹配的高效算法:BM和KMP 以及 ...

  9. 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全

    文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...

最新文章

  1. 团队-象棋游戏-设计文档
  2. 太白教你学python---博客分类目录
  3. leetcode-551-Student Attendance Record I(判断是否出现连续几个相同字符)
  4. 华为杨超斌:5G千元机有望明年底上市
  5. 数据结构与算法(C#实现)系列---树
  6. webRTC之gtest安装使用(十五)
  7. 浅谈FFT、NTT和MTT
  8. 《css权威指南》重点摘要
  9. Linux内核编程的特点
  10. 欧盟无线产品RED认证
  11. 串口驱动的3种实现方式
  12. Hibernate OneToMany中的mappedBy
  13. 信号与系统 徐亚宁 matlab程序,信号与系统分析 [徐亚宁,李和主编] 2010年版
  14. 顶级赛事!2021 CCF大数据与计算智能大赛强势来袭~
  15. html宋体四号字如何设置,宋体小四字体是多少号 首先打开WORD文档,进入界面
  16. linux版高德导航软件下载,高德导航2017
  17. 游戏支付接口平台如何选择
  18. Gas Station (环形加油站)
  19. 能够打开国内网络,比如百度微信,但是打不开外国网站,该怎么解决(主要是DNS的问题)...
  20. 盘点2022年nft艺术品交易平台排行榜

热门文章

  1. 【学习笔记】HTML基础:使用html制作网页
  2. UVA 10555 - Dead Fraction(数论+无限循环小数)
  3. Linux下最快速共享目录的方法
  4. Linux/UNIX不同shell环境下数组的处理
  5. 关于C/C++中的几个关键字(C基础)
  6. 未来的GDI:WPF技术纵览[zz]
  7. python迭代器好处_python迭代器
  8. python和java哪个有用_python和java哪个好
  9. 生成唯一订单号_人人皆知却暗藏玄机的“数据库唯一标识符”
  10. Linux各个版本防火墙操作(CentOS Ubuntu)