CF252A - Little Xor

题目

Little Xor - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

异或的部分性质:

  • a ^ a = 0,a ^ 0 = a
  • 异或具有交换律和结合律,a ^ b ^ c <=> (a ^ b) ^ c

思路

  • 设序列为arr[n],ai表示下标为i的值,当 n = 6, 有 a0, a1, a2, a3, a4, a5
  • 设xorPre[n]为异或前缀和,即xorPre[0] = a0, xorPre[1] = a0 ^ a1, xorPre[2] = a0 ^ a1 ^ a2 …
  • [2, 4]区间的异或和为 xorSum = a2 ^ a3 ^ a4,因为 a0 ^ a1 ^ a0 ^ a1 = (a0 ^ a0) ^ (a1 ^ a1) = 0
  • 可变换为 xorSum = a0 ^ a1 ^ a0 ^ a1 ^ a2 ^ a3 ^ a4 = (a0 ^ a1) ^ (a0 ^ a1 ^ a2 ^ a3 ^ a4)
  • 即xorSum = xorPre[1] ^ xorPre[4]
  • 拓展到任意区间[l, r], xorSum = xorPre[l - 1] ^ xorPre[r]
  • 题目要求连续段中最大的异或和,我们枚举每一个区间[l, r]即可求出最大异或和

代码

#include <bits/stdc++.h>
using namespace std;const int N = 107;// 异或前缀和数组
int xorPre[N];
int n;
int ans;int main() {cin >> n;// 从下标1开始可以避免冗余的判断,当 i = 1 时 xorPre[1] = xorPre[0](0) ^ xorPre[1] = xorPre[1]for (int i = 1; i <= n; i++) {// 读入当前数值cin >> xorPre[i];// 与前一位的异或前缀和异或,得到当位异或和xorPre[i] ^= xorPre[i - 1];}// 枚举左端点ifor (int i = 1; i <= n; i++) {// 枚举右端点,并且j >= i区间才合法for (int j = i; j <= n; j++) {// 当前区间异或和与ans取最大值ans = max(ans, xorPre[j] ^ xorPre[i - 1]);}}// 输出答案cout << ans << endl;return 0;
}

复杂度分析

  • 时间复杂度:O(n^2)
  • 空间复杂度:O(n)

CF252A - Little Xor相关推荐

  1. 【Codeforces/HDU】76A Plus and xor / 2095 find your present (2)(异或)。

    http://codeforces.com/contest/76/problem/D A = X + Y B = X xor Y 异或(不进位加法):两个二进制数,对应的位置上,相同为0,不同为1 性 ...

  2. 感知机搞不定逻辑XOR?Science新研究表示人脑单个神经元就能做到

    机器之心报道 参与:思源.张倩 长期以来,人们一直认为,要让神经网络解决「异或」问题就必须构造多层感知机,单个神经元是做不到的,这一认知使得神经网络的研究第一次进入寒冬.但最近的一项 Science ...

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

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

  4. 可持久化Trie+堆优化 OR Trie树上求XOR第K大 ---- P5283 [十二省联考2019]异或粽子

    题目大意 题目大意: 考虑先做个 prefix xor 前缀异或bi=⨁j=1iaj(1≤i≤n)b_i=\bigoplus_{j=1}^{i}a_j(1\leq i \leq n)bi​=j=1⨁i ...

  5. 线段树 ---- 牛客多校4 ETree Xor 区间异或分段

    题目链接 题目大意: 就是给你nnn个节点的树,树上每个节点都有一个权值wi∈[li,ri]w_i\in[l_i,r_i]wi​∈[li​,ri​],以及相邻(u,v)(u,v)(u,v)的异或值wu ...

  6. HDU3949 XOR (线性基、查找第k小值)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 我们用高斯消元求出的a1,a2,-,ana_1,a_2, \dots,a_na1​,a2​,-,an​ ...

  7. P2574 XOR的艺术(线段树)

    P2574 XOR的艺术 主要是把区间修改变成 XOR 注意 tag 下放的条件是 tag 为 1 时才需要加(加用XOR实现). 区间和只需要反转为 原来 1 的个数 sum = len, 现在 s ...

  8. LeetCode 421. Maximum XOR of Two Numbers in an Array--Python解法

    LeetCode 421. Maximum XOR of Two Numbers in an Array–C++,Python解法 LeetCode题解专栏:LeetCode题解 我做的所有的Leet ...

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

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

最新文章

  1. ng-template、ng-container、ng-content和ngTemplateOutlet、ngProjectAs傻傻分不清!他们究竟是干啥的???
  2. 退一步 - 王阳明的心学智慧
  3. C++设计模式之工厂模式(1)
  4. [Java基础]接口组成(默认方法,静态方法,私有方法)
  5. l启动进程 linux,《日子》. linux 查看进程启动路径
  6. 在创业公司工作不划算了!
  7. 新牛牛盲盒微信小程序源码_支持流量变现,带完整素材图片
  8. Delphi Xe Web开发之 unigui入门视频教程
  9. plc输入/输出模块的选择
  10. 测试电池损耗的软件运行原理,鲁大师电池损耗检测准确?鲁大师电池损耗检测原理解析...
  11. 最通俗PLC教程—源自Koyo光洋PLC自学总结(3)
  12. 操作系统 | 实验五 页面置换算法
  13. Webpack打包UMD的export要带default访问问题
  14. 怎样选择(FC-SAN)光纤通道(存储)交换机
  15. Oracle Order by 按汉字拼音排序
  16. 每一次严重事故都是可以预测的
  17. 计算机网络期末冲刺复习
  18. 卸载linux 安装win10,如何卸载(或重新安装)Windows 10的Ubuntu Bash Shell | MOS86
  19. 中望3D 2021 自动标注
  20. bootstrap框架基础使用

热门文章

  1. 无线传感器网络——读书笔记
  2. 图形学基础 | 纹理映射原理和应用
  3. NCPC 2016 Fleecing the Raffle(推导)
  4. Vuex中的state属性详解
  5. php限制中英文混合的字符长度 | php限制留言字数
  6. 如何查看已连接wifi密码
  7. U8v13.0使用医院行业使用政府会计制度.财务预算单凭证,总账和明细账,多辅助账和明细账不平错误.
  8. Scala学习之猴子选大王,超级素数
  9. 『无为则无心』Python面向对象 — 47、Python中的self详解
  10. Java8中Stream的学习以及实际使用教程