题目描述

原题来自:CODECHEF September Challenge 2015 REBXOR

1​​≤r​1​​<l​2​​≤r​2​​≤N,x⨁yx\bigoplus yx⨁y 表示 xxx 和 yyy 的按位异或。

输入格式

输出格式

输出一行包含给定表达式可能的最大值。

样例

数据范围与提示

5​​,0≤A​i​​≤10​9​​。

题解

首先记录异或前缀和$s[i]=a[1]⊕a[2]⊕a[3] ...⊕a[i]$。

设$l[i]$为以$i$结尾的区间中,异或值的最大值。

因为异或有 $x⊕x=0$ 的性质,所以区间 $[l,r]$ 的异或值

$=a[l]⊕a[l+1]⊕...⊕a[r]$

$=(a[1]⊕a[2]⊕a[3]...⊕a[l-1])⊕(a[1]⊕a[2]⊕a[3] ...⊕a[r])$

$=s[l-1]⊕s[r]$,

所以求$l[i]$,转化为找$j<i$,使得$s[j]⊕s[i]$最大。

转化为「LOJ#10050」「一本通 2.3 例 2」The XOR Largest Pair(Trie

以相似的方法可以求出$r[i]$(以$i$开头的区间中,异或值的最大值)。

在实际操作的过程中可以$l[i]=max(l[i-1],find(x))$,这样$ans=max(l[i]+r[i+1])$就行了。

书上的操作是直接$l[i]=find(x)$然后$ans=max(l[i]+r[i+1])$,感觉不能理解qwq

 编号     题目     状态     分数     总时间     内存     代码 / 答案文件     提交者     提交时间
# #. 「一本通 2.3 例 」Nikitosh 和异或 Accepted ms KiB C++ / 1.2 K qwerta -- :: #include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int s[];
int l[];
int r[];
struct emm{
int nxt[];
}a[];
int cnt=;
int b[];
void add(int x)
{
int j=-;
memset(b,,sizeof(b));
while(x)
{
b[++j]=x&;
x>>=;
}
int k=;
for(int j=;j>=;--j)
{
if(!a[k].nxt[b[j]])
a[k].nxt[b[j]]=++cnt;
k=a[k].nxt[b[j]];
}
return;
}
int find(int x)
{
int now=,k=;
for(int j=;j>=;--j)
{
if(a[k].nxt[-b[j]])
{
now+=(<<j);
k=a[k].nxt[-b[j]];
}
else k=a[k].nxt[b[j]];
}
return now;
}
int main()
{
//freopen("a.in","r",stdin);
int n;
scanf("%d",&n);
for(int i=;i<=n;++i)
scanf("%d",&s[i]);
int x=;
for(int i=;i<=n;++i)
{
x^=s[i];//这里的x为前缀和
add(x);
l[i]=max(l[i-],find(x));
}
//重做一次找r[i]
memset(a,,cnt+);
x=,cnt=;
for(int i=n;i;--i)
{
x^=s[i];
add(x);
r[i]=max(r[i+],find(x));
}
int ans=;
for(int i=;i<n;++i)
ans=max(ans,l[i]+r[i+]);
cout<<ans;
return ;
}

「LOJ#10051」「一本通 2.3 例 3」Nikitosh 和异或(Trie的更多相关文章

  1. LOJ#10064. 「一本通 3.1 例 1」黑暗城堡

    LOJ#10064. 「一本通 3.1 例 1」黑暗城堡 题目描述 你知道黑暗城堡有$N$个房间,$M$条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设$D_i$为如果 ...

  2. LOJ #10131 「一本通 4.4 例 2」暗的连锁

    LOJ #10131 「一本通 4.4 例 2」暗的连锁 给一棵 \(n\) 个点的树加上 \(m\) 条非树边 , 现在需要断开一条树边和一条非树边使得图不连通 , 求方案数 . $n \le 10 ...

  3. 「LOJ#10043」「一本通 2.2 例 1」剪花布条 (KMP

    题目描述 原题来自:HDU 2087 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 输入格式 输入数据 ...

  4. 「一本通 1.3 例 5」weight]

    「一本通 1.3 例 5」weight 题面 给定原数列 \(a_1,a_2,a_n\) ,给定每个数的前缀和以及后缀和,并且打乱顺序. 给出一个集合 \(S\) 要求从集合 \(S\) 中找到合适的 ...

  5. 「LOJ#10050」「一本通 2.3 例 2」The XOR Largest Pair (Trie

    题目描述 在给定的 $N$ 个整数 $A_1,A_2,A_3...A_n$ 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数$N$. 第二行$N$个整数$A_i$. 输出格式 ...

  6. 「LOJ#10072」「一本通 3.2 例 1」Sightseeing Trip(无向图最小环问题)(Floyd

    题目描述 原题来自:CEOI 1999 给定一张无向图,求图中一个至少包含 333 个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方 ...

  7. 「LOJ#10034」「一本通 2.1 例 2」图书管理 (map

    题目描述 图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入.为了更方便的管理图书(以便于帮助想要借书的客人快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统. 该系统需 ...

  8. Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)

    题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...

  9. LOJ #10132. 「一本通 4.4 例 3」异象石

    题目地址 LOJ 题解 神仙思路.思路参考自<算法竞赛进阶指南>. 考虑维护dfs序中相邻两个石头的距离,那么每次?的答案就是sum/2(首尾算相邻) 然后维护一下拿个平衡树/set维护一 ...

随机推荐

  1. 17南宁区域赛 J - Rearrangement 【规律】

    题目链接 https://nanti.jisuanke.com/t/19976 题意 给出 一个n 然后 给出 2*n 个数 可以重新排列成两行 然后 相邻的两个数 加起来 不能被三整除 可以上下相邻 ...

  2. 混淆Android JAR包的方法

    http://blog.csdn.net/vurtne_ye/article/details/35599491 1)导出jar包 如何在eclipse上Android工程中导出jar包?google, ...

  3. Docker 跨主机网络

    Docker提供两种原生的跨主机网络: Overlay  和  Macvlan libnetwork & CNM libnetwork 是 docker 容器网络库,最核心的内容是其定义的 C ...

  4. python里两种遍历目录的方法

    os.walk 函数声明:os.walk(top,topdown=True,onerror=None) (1)参数top表示需要遍历的顶级目录的路径. (2)参数topdown的默认值是“True”表 ...

  5. POJ 1459 网络流 EK算法

    题意: 2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)20 2 1 1 2 表示 共有2个节点,生产能量的点1个,消耗能量的点1个, 传递能量的通道2条:(0,1)20 (1,0) ...

  6. 服务器Windows 2008 R2 安装SQL 2008 R2

    在站点下载 SQL 2008 R2 在安装数据库之前首先安装IIS和.NET 3.5 解压  找到运行程序 (这里需要修改路径,数据库一般不要安装在系统盘) (选择任何一个都可以,这里选择system ...

  7. Centos7 搭建DNS服务器与原理配置详解

    在搭建我们自己DNS服务器之前,先必须了解下DNS服务器的作用和原理. DNS是在互联网上进行域名解析到对应IP地址的服务器,保存互联网上所有的IP与域名的对应信息,然后将我们对网址的访问,解析成IP ...

  8. Spring data jpa 使用技巧记录

    软件152 尹以操 最近在用Springboot 以及Spring data jpa  ,使用jpa可以让我更方便的操作数据库,特开此帖记录使用jpa的一些小技巧. 一.使用spring data j ...

  9. xenapi-add-support-for-vgpu

    Model types 为了在vm中支持vgpu,问题在于vgpu是否应该被当作一个PCI设备, 虽然物理GPU不是一个SR-IOV设备,但vgpu却是以一个类似SR-IOV device上的VF赋给 ...

  10. 我的java mvc

    mint mvc 并不是我原创的.她的基础是廖雪峰老师的webwind mvc. webwind是廖老师模仿spring的一个 rest 风格的 mvc 框架,功能简单,但是mvc的核心功能基本具备了 ...