有趣的思博套路题,想到了基本上加上个对线性基的理解就可以过了

首先考虑到这个把数分成两半的分别异或的过程不会改变某一位上\(1\)的总个数

因此我们求出所有数的\(\operatorname{xor}\),然后从高到低枚举每一位的值,分情况讨论:

  • 如果这一位是\(1\),那么显然分配完后必然使得\(x_1,x_2\)中一个是\(0\),一个是\(1\)
  • 如果这一位是\(0\),如果不是全\(0\),那么必然可以构造方案让\(x_1,x_2\)两数都是\(1\)

比较一下我们优先使\(x_1+x_2\)最大,因此如果这一位是\(0\)就应该优先考虑

子集异或和最大怎么做,直接套线性基即可,这里其实就是改了下插入的优先级,让\(0\)位的先插入

求出\(x_1+x_2\)的最大值后我们尽量把\(1\)位上的\(1\)分给\(x_2\)即可,继续从高位到低位在线性基上查即可

CODE

#include<cstdio>
#include<cctype>
#define RI register int
#define CI const int&
#define Tp template <typename T>
using namespace std;
const int N=100005;
typedef long long LL;
int n; LL a[N],xrs;
class FileInputOutput
{
private:
static const int S=1<<21;
#define tc() (A==B&&(B=(A=Fin)+fread(Fin,1,S,stdin),A==B)?EOF:*A++)
char Fin[S],*A,*B;
public:
Tp inline void read(T& x)
{
x=0; char ch; while (!isdigit(ch=tc()));
while (x=(x<<3)+(x<<1)+(ch&15),isdigit(ch=tc()));
}
#undef tc
}F;
class Linear_Base
{
private:
static const int R=60;
LL bit[R+5];
public:
inline void insert(LL x)
{
RI i; for (i=R;~i;--i) if (!((xrs>>i)&1)&&((x>>i)&1))
{
if (!bit[i]) { bit[i]=x; return; } x^=bit[i];
}
for (i=R;~i;--i) if ((xrs>>i)&1&&((x>>i)&1))
{
if (!bit[i]) { bit[i]=x; return; } x^=bit[i];
}
}
inline LL query(LL ans=0)
{
RI i; for (i=R;~i;--i) if (!((xrs>>i)&1)&&!((ans>>i)&1)) ans^=bit[i];
for (i=R;~i;--i) if (((xrs>>i)&1)&&((ans>>i)&1)) ans^=bit[i]; return ans;
}
}LB;
int main()
{
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
RI i; for (F.read(n),i=1;i<=n;++i) F.read(a[i]),xrs^=a[i];
for (i=1;i<=n;++i) LB.insert(a[i]); return printf("%lld",LB.query()),0;
}

LOJ #6060. 「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set的更多相关文章

  1. LOJ 6060「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set(线性基,贪心)

    LOJ 6060「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set $ solution: $ 这一题的重点在于优先级问题,我们应该先保证总和最大,然后再保证某一个最小.于是我 ...

  2. Loj #6069. 「2017 山东一轮集训 Day4」塔

    Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...

  3. Loj #6073.「2017 山东一轮集训 Day5」距离

    Loj #6073.「2017 山东一轮集训 Day5」距离 Description 给定一棵 \(n\) 个点的边带权的树,以及一个排列$ p\(,有\)q $个询问,给定点 \(u, v, k\) ...

  4. Loj 6068. 「2017 山东一轮集训 Day4」棋盘

    Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, ...

  5. LOJ #6074. 「2017 山东一轮集训 Day6」子序列

    #6074. 「2017 山东一轮集训 Day6」子序列 链接 分析: 首先设f[i][j]为到第i个点,结尾字符是j的方案数,这个j一定是从i往前走,第一个出现的j,因为这个j可以代替掉前面所有j. ...

  6. loj #6077. 「2017 山东一轮集训 Day7」逆序对

    #6077. 「2017 山东一轮集训 Day7」逆序对   题目描述 给定 n,k n, kn,k,请求出长度为 n nn 的逆序对数恰好为 k kk 的排列的个数.答案对 109+7 10 ^ 9 ...

  7. LOJ #6119. 「2017 山东二轮集训 Day7」国王

    Description 在某个神奇的大陆上,有一个国家,这片大陆的所有城市间的道路网可以看做是一棵树,每个城市要么是工业城市,要么是农业城市,这个国家的人认为一条路径是 exciting 的,当且仅当 ...

  8. loj#6073. 「2017 山东一轮集训 Day5」距离(树链剖分 主席树)

    题意 题目链接 Sol 首先对询问差分一下,我们就只需要统计\(u, v, lca(u, v), fa[lca(u, v)]\)到根的路径的贡献. 再把每个点与\(k\)的lca的距离差分一下,则只需 ...

  9. loj#6074. 「2017 山东一轮集训 Day6」子序列(矩阵乘法 dp)

    题意 题目链接 Sol 设\(f[i][j]\)表示前\(i\)个位置中,以\(j\)为结尾的方案数. 转移的时候判断一下\(j\)是否和当前位置相同 然后发现可以用矩阵优化,可以分别求出前缀积和逆矩 ...

随机推荐

  1. SSM-MyBatis-16:Mybatis中延迟加载

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 延迟加载: 所谓延迟加载是什么? 从字面意思理解到的是等一会再加载 从行为分析,他主要是缓解数据库压力,提高性 ...

  2. webstorm-快捷键大全

    Webstorm快捷键 Eclipse快捷键 说明 ctrl+shift+N ctrl+shift+R 通过文件名快速查找工程内的文件(必记) ctrl+shift+alt+N ctrl+shift+ ...

  3. 微信小程序开发之formId使用(模板消息)

    基于微信小程序的模板消息:基于微信的通知渠道,我们为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验.模板推送位置:服务通知模板下发条件:用户本人在微信体系内与页面有交互 ...

  4. 监控与管理dubbo服务

    Dubbo是阿里多年前开源的一套服务治理框架,在众多互联网企业里应用广泛.本文介绍了一些如何监控与管理dubbo服务.使用的工具与<dubbox 的各种管理和监管>大致相同,本文更侧重于命 ...

  5. 一个js小游戏----总结

    花了大概一天左右的功夫实现了一个js小游戏的基本功能,类似于“雷电”那样的小游戏,实现了随即怪物发生器,碰撞检测,运动等等都实现了,下一个功能是子弹轨迹,还有其他一些扩展功能,没有用库,也没有用web ...

  6. 你不知道的JavaScript--Item5 全局变量

    1.尽量少用全局对象 全局变量的问题在于,你的JavaScript应用程序和web页面上的所有代码都共享了这些全局变量,他们住在同一个全局命名空间,所以当程序的两个不同部分定义同名但不同作用的全局变量 ...

  7. POJ_2318_TOYS&&POJ_2398_Toy Storage_二分+判断直线和点的位置关系

    POJ_2318_TOYS&&POJ_2398_Toy Storage_二分+判断直线和点的位置 Description Calculate the number of toys th ...

  8. PCB设计流程

    一般PCB基本设计流程如下:前期准备->PCB结构设计->PCB布局->布线->布线优化和丝印->网络和DRC检查和结构检查->制版. 第一.前期准备. 这包括准备 ...

  9. 如何删除git远程仓库项目的所有内容,重新提交所有内容

    如果我们上传了一个项目到git并已经commit和push了所有内容,但是忘记搞gitignore文件, 导致一些不想加入版本控制的文件,如IDE配置文件,编译文件,部署文件等, 现在不知道怎么办了? ...

  10. k8s实践 - 如何优雅地给kong网关配置证书和插件。

    前言 从去年上半年微服务项目上线以来,一直使用kong作为微服务API网关,整个项目完全部署于k8s,一路走来,对于k8s,对于kong,经历了一个从无到有,从0到1的过程,也遇到过了一些坎坷,今天准 ...