275. To xor or not to xor

链接

题意:

  给n个数字,问任意异或后能够组成的最大值。

分析:

  线性基模板题。

  将每个数的二进制看成一个向量,可以高斯消元得到线性基,复杂度$O(60^2n)$,每次去找当前位上为1的一个数,然后和其他的所有数异或。

  但是可以$O(60n)$的求线性基。依次扫每个向量,然后如果这位没有1,就将它放到这一位上,否则异或这一位上的数。这样会得到一个上三角的矩阵,和高斯消元是一样的,也可以消成对角矩阵。

  attack的模拟赛虽然四道出锅了三道,唯一没出锅的T3线性基还不会,于是考试剩余的时间学了线性基。。练一下模板!

代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4
 5 const int N = 100 + 10;
 6 const int m = 62;
 7 LL a[N],b[N];
 8 int n;
 9
10 void build() {
11     for (int i=1; i<=n; ++i)
12         for (int j=m; j>=0; --j)
13             if ((1LL<<j)&a[i]) {
14                 if (b[j]) a[i] ^= b[j];
15                 else {
16                     b[j] = a[i];
17                     for (int k=j-1; k>=0; --k) if (b[k]&&((1LL<<k)&b[j])) b[j] ^= b[k];
18                     for (int k=j+1; k<=m; ++k) if ((1LL<<j)&b[k]) b[k] ^= b[j];
19                     break;
20                 }
21             }
22
23 }
24 void solve() {
25     LL ans = 0;
26     for (int i=0; i<=m; ++i)
27         if (b[i]) ans ^= b[i];
28     cout << ans;
29 }
30 int main() {
31     scanf("%d",&n);
32     for (int i=1; i<=n; ++i) scanf("%I64d",&a[i]);
33     build();
34     solve();
35     return 0;
36 }

转载于:https://www.cnblogs.com/mjtcn/p/9260194.html

SGU 275. To xor or not to xor相关推荐

  1. 汇编语言中xor指令_汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作...

    XOR 指令在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作,并将结果存放在目标操作数中: XOR destination, source XOR 指令操作数组合和大小与 AND 指令及 O ...

  2. 汇编语言中xor指令_汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)...

    汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号 ...

  3. 【NWPU2018 练着玩】入门班day1 枚举贪心[Cloned] F - Claris and XOR (HDU-5661 Claris and XOR )

    题目链接:https://vjudge.net/contest/246949#problem/F 先参考大佬的博客: https://blog.csdn.net/idealism_xxm/articl ...

  4. [CF1616H]Keep XOR Low / [CF_GYM102331B]Bitwise Xor

    题目 第一道题:传送门 to CF.下面就以这道题为例. 第二道题:传送门 to CF. 思路 解决计数问题,先想判定问题.在这道题里,我已经因此吃了大亏了-- 如果是判定问题,可以考虑求解 max⁡ ...

  5. 牛客练习赛32 -- Xor Path

    题解: 首先我们知道,一个点肯定不可能只出现一次的,他会出现好多次,但是根据二进制 a xor a =0 a xor a xor a =a 所以我们发现当某个点出现的次数为偶数次时,这个点相当于没有出 ...

  6. 如何理解“异或(XOR)”运算在计算机科学中的重要性?(转自-阿里聚安全)...

    XOR加密是一种简单高效.非常安全的加密方法 一. XOR 运算 逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算". 它的定义是:两个值相同时,返 ...

  7. 字典树--Xor问题

    字典树大家都知道吧,如果不知道可以看这里,我的模板写得还是不错的: 字符串–Trie树(字典树) 接下来我们先看一个问题,通过这个问题来了解Xor这个运算的基本性质: 洛谷 P2420 让我们异或吧 ...

  8. 洛谷 P4151 BZOJ 2115 [WC2011]最大XOR和路径

    //bzoj上的题面太丑了,导致VJ的题面也很丑,于是这题用洛谷的题面 题面描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如 ...

  9. AtCoder - arc098_b Xor Sum 2(尺取+位运算)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,现在要求 AlxorAl+1xor...xorAr=Al+Al+1+...+ArA_l\ xor\ A_{l+1}\ xor\ ...\ ...

最新文章

  1. 用python编写daemon监控进程并自动恢复(附Shell版)
  2. 【安全】安装phpLDAPadmin管理LDAP
  3. C++提高部分_C++模板的局限性_以及用模板具体化来解决模板局限性问题---C++语言工作笔记086
  4. blongsTo 用法
  5. mysql主祝福hi_MySql - GROUP BY 和 HAVING关键字
  6. android 7双排设置菜单,双排状态栏
  7. Mac新手使用技巧——AirDrop
  8. 全局拉普拉斯平滑之(1)Strucutre extraction from texture via relative total variation及稀疏矩阵求解
  9. android ssl-dl
  10. 团队项目第一阶段站立会议01
  11. Atitit 查找轮廓 findContours
  12. c32-野指针和内存操作分析
  13. lpx寒假作业案例5
  14. linux cups用户名密码,Linux下使用CUPS提供打印服务
  15. 2017年总结,2018新开始
  16. Java曲线之削峰填谷,科学网—Lorenz曲线之削峰填谷 - 李宁的博文
  17. 春节攻防战的战前谋划-电商必看
  18. 我的中国心-百家姓头像
  19. 影像组学训练营 第三天(共三天)
  20. 一秒批量修改文件扩展名(后缀名)

热门文章

  1. 为Ubuntu安装FTP服务
  2. http://www.gamesofdesire.com/
  3. 逆波兰表达式简单介绍
  4. 车已经买有近一个月了,技术也在提升中
  5. 并联匹配和串联匹配的原理和选择
  6. 怎么用c语言表示大整数的四则运算,用c语言编写大整数的四则运算,求大神
  7. Jdbc访问mysql查询聚合函数_JDBC连接参数设置对Oracle数据库的影响分析
  8. 4.24企业数据库应用实践技术沙龙
  9. DataX在数据迁移中的应用
  10. GTS来了!阿里微服务架构下的分布式事务解决方案