Petrozavodsk Winter Training Camp 2018 Jagiellonian U Contest Problem A. XOR
时间:2019-10-22
本文章向大家介绍Petrozavodsk Winter Training Camp 2018 Jagiellonian U Contest Problem A. XOR,主要包括Petrozavodsk Winter Training Camp 2018 Jagiellonian U Contest Problem A. XOR使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
先把所有的数异或起来 得到sum 然后sum有一些位是1一些位是0 是0的位表示所有数里面有这位的数是偶数个
则无论怎么划分数 这一位对最终的答案都是不会有贡献的 因为偶数=偶数+偶数/奇数+奇数
所以我们把所有数直接&sum不管那些没有贡献的位 再一个个插入作线性基
拿出一个最高位的1给A 那么我们现在要做的就是尽量保证A剩下的高位能不是1就别是1 这样得到的答案是最优的
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[65]; ll num[100005]; ll x; int main() { int TNT; scanf("%d", &TNT); while (TNT--) { memset(a, 0, sizeof(a)); int n; ll sum = 0; scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%lld", &x); num[i] = x; sum ^= x; } for (int i = 1; i <= n; i++) { num[i] &= sum; } for (int i = 1; i <= n; i++) { for (int j = 62; j >= 0; j--) { if (num[i] & (1ll << j)) { if (!a[j]) { a[j] = num[i]; break; } else { num[i] ^= a[j]; } } } } int aim = -1; ll aimx = 0; for (int i = 62; i >= 0; i--) { if (sum & (1ll << i)) { aim = i; aimx = a[i]; break; } } for (int i = aim - 1; i >= 0; i--) { if (aimx & (1ll << i)) { aimx ^= a[i]; } } ll ans = aimx - (aimx ^ sum); printf("%lld\n", ans); } }
原文地址:https://www.cnblogs.com/Aragaki/p/11722421.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring Cloud 之服务网关 Zuul (一)
- React进阶篇(八)react redux
- 通过一个简单例子理解JavaScript闭包和this对象
- Spring Cloud 之服务网关 Gateway (一)
- Hacking with iOS: SwiftUI Edition - Hot Prospects项目(二)
- HarmonyOS-对Android开发者也太友好了吧
- 你还在使用复杂的 zkclient 开发 zookeeper 么?是时候用 Curator 了 !
- 如何通俗理解类和类型的差别?
- 如何理解变量?
- 装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
- 能否详细讲讲字符串呢?
- 能否一次性帮我把数组讲明白?
- 什么是装箱和拆箱?
- ceph常用命令
- 如何创建一个不受长度限制的数组?