SGU 275. To xor or not to xor
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相关推荐
- 汇编语言中xor指令_汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作...
XOR 指令在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作,并将结果存放在目标操作数中: XOR destination, source XOR 指令操作数组合和大小与 AND 指令及 O ...
- 汇编语言中xor指令_汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)...
汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号 ...
- 【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 ...
- [CF1616H]Keep XOR Low / [CF_GYM102331B]Bitwise Xor
题目 第一道题:传送门 to CF.下面就以这道题为例. 第二道题:传送门 to CF. 思路 解决计数问题,先想判定问题.在这道题里,我已经因此吃了大亏了-- 如果是判定问题,可以考虑求解 max ...
- 牛客练习赛32 -- Xor Path
题解: 首先我们知道,一个点肯定不可能只出现一次的,他会出现好多次,但是根据二进制 a xor a =0 a xor a xor a =a 所以我们发现当某个点出现的次数为偶数次时,这个点相当于没有出 ...
- 如何理解“异或(XOR)”运算在计算机科学中的重要性?(转自-阿里聚安全)...
XOR加密是一种简单高效.非常安全的加密方法 一. XOR 运算 逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算". 它的定义是:两个值相同时,返 ...
- 字典树--Xor问题
字典树大家都知道吧,如果不知道可以看这里,我的模板写得还是不错的: 字符串–Trie树(字典树) 接下来我们先看一个问题,通过这个问题来了解Xor这个运算的基本性质: 洛谷 P2420 让我们异或吧 ...
- 洛谷 P4151 BZOJ 2115 [WC2011]最大XOR和路径
//bzoj上的题面太丑了,导致VJ的题面也很丑,于是这题用洛谷的题面 题面描述 XOR(异或)是一种二元逻辑运算,其运算结果当且仅当两个输入的布尔值不相等时才为真,否则为假. XOR 运算的真值表如 ...
- AtCoder - arc098_b Xor Sum 2(尺取+位运算)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,现在要求 AlxorAl+1xor...xorAr=Al+Al+1+...+ArA_l\ xor\ A_{l+1}\ xor\ ...\ ...
最新文章
- 用python编写daemon监控进程并自动恢复(附Shell版)
- 【安全】安装phpLDAPadmin管理LDAP
- C++提高部分_C++模板的局限性_以及用模板具体化来解决模板局限性问题---C++语言工作笔记086
- blongsTo 用法
- mysql主祝福hi_MySql - GROUP BY 和 HAVING关键字
- android 7双排设置菜单,双排状态栏
- Mac新手使用技巧——AirDrop
- 全局拉普拉斯平滑之(1)Strucutre extraction from texture via relative total variation及稀疏矩阵求解
- android ssl-dl
- 团队项目第一阶段站立会议01
- Atitit 查找轮廓 findContours
- c32-野指针和内存操作分析
- lpx寒假作业案例5
- linux cups用户名密码,Linux下使用CUPS提供打印服务
- 2017年总结,2018新开始
- Java曲线之削峰填谷,科学网—Lorenz曲线之削峰填谷 - 李宁的博文
- 春节攻防战的战前谋划-电商必看
- 我的中国心-百家姓头像
- 影像组学训练营 第三天(共三天)
- 一秒批量修改文件扩展名(后缀名)