【题解】LOJ6060 Set(线性基)
【题解】LOJ6060 Set(线性基)
orz gql
设所有数的异或和为\(S\),答案是在\(\max (x_1+S\and x_1)\)的前提下\(\min x_1\)输出\(x_1\)
转换一下就是\(\max (x_2+S\and x_2),s.t. \max x_2\)
考虑先贪心地求出外层\(\max\)
按位贪心,设\(u_i\)为\(S\)第\(i\)位上的\(bit\) ,\(u_i\)是个\(0/1\)变量
- \(u_i=1\)时,对于\(x_2\)这一位我们没有任何要求,因为无论\(x_2\)该位上的取值,外层\(\max\)不变。
- \(u_i=0\)时,对于\(x_2\)这一位我们要求能有\(bit\)就有\(bit\) ,这样可以对答案有\(2\times 2^i\)贡献。
由于满足要求的\(x_2\)有很多,我们现在要找到最大的那种,就直接线性基套进去就好了。具体实现代码带注释,文字太难说明了!
相当于复读gql的代码了
//@winlere
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std; typedef long long ll;
inline ll qr(){
register ll ret=0,f=0;
register char c=getchar();
while(c<48||c>57)f|=c==45,c=getchar();
while(c>=48&&c<=57) ret=ret*10+c-48,c=getchar();
return f?-ret:ret;
}
const int maxn=1e5+5;
ll data[maxn];
ll base[66];
ll num[66];
ll n,S;
inline void insert(ll x){
for(register int t=63;t;--t)
if(!(S&num[t])&&(x&num[t])){
if(!base[t]) return void(base[t]=x);
x^=base[t];
}
//假如当前元素可以按照条件一的条件插入,就return了,运行下面的代码是条件二
for(register int t=63;t;--t)
if((S&num[t])&&(x&num[t])){
if(!base[t]) return void(base[t]=x);
x^=base[t];
}
}
inline ll top(){
ll ret=0;
//构造满足条件一二
for(register int t=63;t;--t)
if(!(S&num[t])&&!(ret&num[t])) ret^=base[t];
//构造x最大
for(register int t=63;t;--t)
if( (S&num[t])&&!(ret&num[t])) ret^=base[t];
return ret;
}
int main(){
num[1]=1;
for(register int t=2;t<=63;++t) num[t]=num[t-1]<<1;
n=qr();
for(register int t=1;t<=n;++t) data[t]=qr(),S^=data[t];
for(register int t=1;t<=n;++t) insert(data[t]);
cout<<(top()^S)<<endl;
return 0;
}
【题解】LOJ6060 Set(线性基)的更多相关文章
- BZOJ 4671 异或图 | 线性基 容斥 DFS
题面 Description 定义两个结点数相同的图 G1 与图 G2 的异或为一个新的图 G, 其中如果 (u, v) 在 G1 与 G2 中的出现次数之和为 1, 那么边 (u, v) 在 G 中 ...
- 【BZOJ4184】shallot 线段树+vector+线性基
[BZOJ4184]shallot Description 小苗去市场上买了一捆小葱苗,她突然一时兴起,于是她在每颗小葱苗上写上一个数字,然后把小葱叫过来玩游戏. 每个时刻她会给小葱一颗小葱苗或者是从 ...
- 【线性基】51nod1312 最大异或和&LOJ114 k大异或和
1312 最大异或和 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 有一个正整数数组S,S中有N个元素,这些元素分别是S[0] ...
- 【LOJ6060】【2017 山东一轮集训 Day1 / SDWC2018 Day1】Set 线性基
题目大意 给出 \(n\) 个非负整数,将数划分成两个集合,记为一号集合和二号集合.\(x_1\) 为一号集合中所有数的异或和,\(x_2\) 为二号集合中所有数的异或和.在最大化 \(x_1 + x ...
- 【题解】 Codeforces 662A Gambling Nim (线性基)
662A,戳我戳我 Solution: 我们先取\(ans=a[1] \bigoplus a[2] \bigoplus ... \bigoplus a[n]\),然后我们定义\(c[i]=a[i] \ ...
- 【题解】kth异或和/魔改版线性基
[题解]魔改版线性基 魔改版线性基解决此类问题. 联系线性空间的性质,我们直接可以构造出这样的基: \[ 100000 \\ 010000 \\ 000010 \\ 000001 \] 使得每个基的最 ...
- 【题解】P4570 [BJWC2011]元素 - 线性基 - 贪心
P4570 [BJWC2011]元素 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 给你 \(n\) 个二元组 \( ...
- Codeforces 959F Mahmoud and Ehab and yet another xor task 线性基 (看题解)
Mahmoud and Ehab and yet another xor task 存在的元素的方案数都是一样的, 啊, 我好菜啊. 离线之后用线性基取check存不存在,然后计算答案. #inclu ...
- 题解——洛谷P3812【模板】线性基
学了下线性基 使用好像并不复杂 打了板子 但是要注意位运算优先级 #include <cstdio> #include <algorithm> #include <cst ...
随机推荐
- 蓝牙(3)蓝牙UUID与SDP
1.服务发现协议 (SDP) SDP = Service Discovery Protocol 主要用来根据已分配编号(UUID)搜索服务.浏览群组列表.文档 URL 和图标 URL等. 详细见: ...
- Spring读取配置文件,地址问题,绝对路径,相对路径
Spring在读取配置文件时,是相对于bin,或者WEB-INF的: “applicationContext.xml”就是找bin或WEB-INF及子文件夹下的文件: “/res/applicatio ...
- uva 11665 Chinese Ink (几何+并查集)
UVA 11665 随便给12的找了一道我没做过的几何基础题.这题挺简单的,不过uva上通过率挺低,通过人数也不多. 题意是要求给出的若干多边形组成多少个联通块.做的时候要注意这题是不能用double ...
- 系统学习前端之FormData详解
FormData 1. 概述 FormData类型其实是在XMLHttpRequest 2级定义的,它是为序列化表以及创建与表单格式相同的数据(当然是用于XHR传输)提供便利. 2. 构造函数 创建一 ...
- 队列&优先队列
1.队列 普通的队列都是先进先出,元素从队尾添加,从队头删除. function queue(){ var arr=[]; this.enqueue=function(item){ arr.push( ...
- kwargs.pop是什么意思
pop()函数一般用来删除list列表的末尾元素,同样,kwargs.pop()用来删除关键字参数中的末尾元素,比如:kwargs = {'Michael': 95, 'Bob': 75, 'Trac ...
- C#的类
一.String类 1.Length 字符的长度 string x = Console.ReadLine();int i = x.Length;// Length 是获取字符串的长度(从1开始数)Co ...
- Eclipse设置默认编码为UTF-8
需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 Window ...
- tensorflow -gpu安装,史上最新最简单的途径(不用自己装cuda,cdnn)
tensorflow -gpu安装首先,安装Anoconda1. 官网下载点我: 2.安装 点击 python 3.6 version自动下载x64版,下载好之后,然后安装. 如图,打上勾之后,一路n ...
- 买房的贷款时间是否是越长越好?https://www.zhihu.com/question/20842791
买房的贷款时间是否是越长越好?https://www.zhihu.com/question/20842791