题目大意:
  给你n个数,求这些数能异或出的数的最大值。

思路:
  线性基模板。
  b中的数满足对于每个b[i],最高位在第i位。
  构造方法就是对于每个数字,从高到低枚举每一个1,如果这一位对应的b[i]还没有,就把这个数作为b[i],如果有,就把这个数异或上b[i]。
  考虑两个数a,b,它们能异或出来的数为0,a,b,a xor b,如果把b换成a xor b,它们能异或出来的数还是0,a,b,a xor b。
  所以b能异或出来的值域和a能异或出来的值域相同。
  最后能异或出的最大值可以用类似贪心的思想。
  从高到低枚举每个数,如果和现在的ans异或起来比ans大那么就异或,不然就不管。
  这样就能优先保证更高的位出现在答案中,也就可以保证ans最大。

 1 #include<cstdio>
 2 #include<cctype>
 3 #include<algorithm>
 4 typedef long long int64;
 5 inline int64 getint() {
 6     register char ch;
 7     while(!isdigit(ch=getchar()));
 8     register int64 x=ch^'0';
 9     while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
10     return x;
11 }
12 const int N=51;
13 int64 b[N];
14 int main() {
15     const int n=getint();
16     for(register int i=0;i<n;i++) {
17         int64 x=getint();
18         for(register int i=N-1;~i;i--) {
19             if(!(x&(1ll<<i))) continue;
20             if(!b[i]) {
21                 b[i]=x;
22                 break;
23             } else {
24                 x^=b[i];
25             }
26         }
27     }
28     int64 ans=0;
29     for(register int i=N-1;~i;i--) {
30         ans=std::max(ans,ans^b[i]);
31     }
32     printf("%lld\n",ans);
33     return 0;
34 }

转载于:https://www.cnblogs.com/skylee03/p/7807815.html

[洛谷3812]【模板】线性基相关推荐

  1. 线性筛法 欧拉筛c语言,[洛谷P3383][模板]线性筛素数-欧拉筛法

    Hibernate Hql 总结 1.from子句 Hibernate中最简单的查询语句的形式如下: from eg.Cat该子句简单的返回eg.Cat类的所有实例. 通常我们不需要使用类的全限定名, ...

  2. 专题·树链剖分【including 洛谷·【模板】树链剖分

    初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...

  3. 洛谷·【模板】点分树 | 震波【including 点分树

    初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...

  4. 洛谷.4897.[模板]最小割树(Dinic)

    题目链接 最小割树模板.具体见:https://www.cnblogs.com/SovietPower/p/9734013.html. ISAP不知为啥T成0分了.. Dinic: //1566ms ...

  5. 强连通分量:洛谷P3387 模板:缩点

    传送门 顾名思义,模板awa #include <cstdio> #include <cstring> #include <cmath> #include < ...

  6. 【后缀数组】洛谷P3809模板题

    题目背景 这是一道模板题. 题目描述 读入一个长度为 n n n 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置. ...

  7. 洛谷 P1919 模板】A*B Problem升级版(FFT快速傅里叶)

    https://www.luogu.com.cn/problem/P1919 题目背景 本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源. 题目描述 给你两个正整数 a ...

  8. 洛谷 p3372 模板-线段树 1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个 ...

  9. 洛谷.4245.[模板]任意模数NTT(MTT/三模数NTT)

    题目链接 三模数\(NTT\): 就是多模数\(NTT\)最后\(CRT\)一下...下面两篇讲的都挺明白的. https://blog.csdn.net/kscla/article/details/ ...

最新文章

  1. android studio 库项目,Android Studio 发布项目到jcenter库
  2. 上交大博士生:博三经历5轮审稿被拒后,如今发10篇论文成为审稿人
  3. 这38个小技巧告诉你如何快速学习MySQL数据库
  4. 各浏览器对document.getElementById等方法的实现差异
  5. SpringBoot应用的集成测试
  6. 关于Android的HAL的一些理解
  7. Linux 常用的软件包管理器/软件包管理工具
  8. 搜索引擎优化学习原理_如何使用数据科学原理来改善您的搜索引擎优化工作
  9. 如何在Ubuntu 14.10 上安装WordPress?
  10. 【论文写作】课程指导平台的开发中界面设计如何写
  11. Matlab实用代码——直方图的绘制并在单个直方图上标注对应数字
  12. mysql5.7 keepalived_基于MySQL 5.7多源复制及Keepalived搭建三节点高可用架构
  13. 尼日利亚4g频段_4G全球频段划分及主要运营商对应表2015版
  14. c语言oct,【讨论】OCT扫描中的C-scan你知道吗????????
  15. 《2022,自我增值的7个好习惯》读书笔记
  16. 变电站3D仿真实训系统的特色及优势
  17. 德国计算机课程匹配度,匹配度对于德国留学有多重要
  18. ipython出现键盘输入错乱问题
  19. 清华大学计算机系教授武汉理工大学,武汉理工大学
  20. C#.Net干货分享-构建Aocr_ImageHelper读取图片文字做解析

热门文章

  1. Pentaho部署文档校验过程中遇到的一些问题和解决对策
  2. Android 使用Application类保存应用的全局数据
  3. 区块链的价值在于建立信任,而ICO却在摧毁信任
  4. pyCharm编辑器激活使用
  5. Wdatepicker日期控件的使用指南
  6. jquery的文档处理(部分)
  7. 通配符(WildCard)的使用
  8. VirtualBox 虚拟Ubuntu系统与主机互ping
  9. dropdown.js
  10. Netty消息接收类故障案例分析