P3812-[模板]线性基
正题
题目链接:https://www.luogu.com.cn/problem/P3812
题目大意
给出nnn个数,求在其中选出若干个数使得它们的异或和最大。
解题思路
序列aaa的线性基bbb满足以下性质
- aaa中的任何一个数都可以由bbb中的若干个数异或得到
- bbb中的任何一个数都不可由bbb中的若干个数异或得到
- bbb是满足性质1,21,21,2的最小集合
如何用线性基求该题?求序列aaa的最大异或和其实就是求其线性基的最大异或和,而且我们知道对于线性基中的数did_idi满足它的i+1i+1i+1位为111。
所以对于每个did_idi如果答案异或上他可以变大那么久异或上它即可。
时间复杂度O(50n)O(50n)O(50n)
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
ll n,d[60];
void add(ll x){for(ll i=51;i>=0;i--){if(x&(1ll<<i)){if(d[i])x^=d[i];else{d[i]=x;break;}}}return;
}
int main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++){ll x;scanf("%lld",&x);add(x);}ll ans=0;for(ll i=51;i>=0;i--)if(ans<(ans^d[i]))ans=ans^d[i];printf("%lld",ans);
}
P3812-[模板]线性基相关推荐
- 洛谷P3812 【模板】线性基
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 线性基是个啥玩意儿-- 为啥只要消成上三角矩阵就行了?不是得搞成对角矩阵的么? 1 //minamoto 2 #include<cstdio& ...
- [洛谷3812]【模板】线性基
题目大意: 给你n个数,求这些数能异或出的数的最大值. 思路: 线性基模板. b中的数满足对于每个b[i],最高位在第i位. 构造方法就是对于每个数字,从高到低枚举每一个1,如果这一位对应的b[i]还 ...
- F. Ivan and Burgers(前缀线性基模板)
前缀线性基模板 F. Ivan and Burgers /*Author : lifehappy */ #pragma GCC optimize(2) #pragma GCC optimize(3) ...
- [数学]------线性基
线性基是什么 线性基是一个数的集合. 对于数的集合 A ,A的线性基是指,在 A 中选取任意多个数进行异或,得到的结果的值域,和 A 的线性基中数字异或的值域相同.这样对原数组元素的异或运算就可以转化 ...
- Luogu P5556 圣剑护符(线性基,树链剖分,线段树)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 小L 和 小K 面前的圣剑由 nnn 块护符组成,分别编号为 1,2,-,n1,2,\ ...
- HDU3949 XOR (线性基、查找第k小值)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 我们用高斯消元求出的a1,a2,-,ana_1,a_2, \dots,a_na1,a2,-,an ...
- 2017年ICPC西安邀请赛A、XOR(线段树套线性基 + 思维)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目传送门 Problem 给你 nnn 和 nnn 个整数的数组 aaa,以及kkk和qqq,有 q ...
- 【基础操作】线性基详解
线性基是一个奇妙的集合(我摘的原话) 这里以非 $OI$ 的角度介绍了线性基 基础部分 模板题 给你 $n$ 个数的集合,让你选出任意多个不重复的数,使得它们的异或和最大. 线性基是什么 我们称集合 ...
- 线性代数(矩阵、高斯、线性基……)
矩阵 矩阵加法: 相同位置相加. 矩阵乘法: 满足分配率.结合律,不满足交换律(矩阵与逆矩阵之间除外) . 矩阵转置: 记矩阵为 \(A\) ,则 \(A\) 的转置记为 \(A^T\) . 性质: ...
最新文章
- 安装Debian 7.8 过程,以及该系统的配置过程
- HBase总结(十二)Java API 与HBase交互实例
- springboot学习笔记(十)
- kafka 同步提交 异步_极限MQ (5) Kafka 消费者
- 如何参与一个GitHub开源项目
- 没有人能阻止程序员将电脑上的一切搬到网页上
- windows多用户 文件夹不共享_手把手教你如何使用Tekla多用户
- 深入理解JSON对象
- IE被哪个T吗D修改了,卧槽!
- Flask练手项目之通讯录
- Python自动化办公 | 如何实现报表自动化?
- 密码学基础(二):对称加密
- 传世调试之-道士技能《解毒术》、《神光术》:无法正常升级。
- 国内用户最多的linux系统,统信UOS将可能超越麒麟系统夺得中国Linux市场份额第一名...
- 天猫精灵GXIC2020 AIOT物联网大赛获奖了
- 火狐 Firefox 浏览器书签同步问题
- ONOS 以及 ODL
- 【转载】分页插件中关于PageInfo
- 2020腾讯广告算法大赛
- Brain Tumor Segmentation (BraTS) 脑部肿瘤分割2--二维UNet的复现与数据准备篇
热门文章
- 京东面试官:呦,你对中间件 Mycat了解的还挺深~
- 用html制作篮球网页,篮球网站的设计与实现).doc
- 中止是怎么用的_多士炉怎么用 使用多士炉注意事项
- [JavaWeb-HTML]CSS与html结合方式
- [Java基础]List集合子类特点
- 双端队列 BFS + Chamber of Secrets CodeForces - 173B
- 安徽计算机学业水平测试内容,【2017年整理】安徽省学业水平测试信息技术(必修)知识点.doc...
- linux不能更改密码,Linux服务器无法更改密码的解决办法--passwd: User not known
- Zookeeper实践与应用--分布式锁实现
- SQL(三)- 连接查询