【异或运算】codeforces 1153 B. Dima and a Bad XOR
前言
异或运算:是一种在二进制数系统中使用的逻辑运算。它的基本规则是对两个二进制位进行比较,如果这两个位不同,则结果为 \(1\);如果相同,则结果为 \(0\)。
异或运算的规则
- \(0\) XOR \(0\) = \(0\)
- \(0\) XOR \(1\) = \(1\)
- \(1\) XOR \(0\) = \(1\)
- \(1\) XOR \(1\) = \(0\)
特性
- 自反性:任何数与自身进行异或运算的结果均为 \(0\)
- 零和性:任何数与 \(0\) 进行异或运算都是其本身
- 交换律:异或运算符合交换律,即 \(a\) XOR \(b\) = \(b\) XOR \(a\)
- 结合律:异或运算符合结合律,即 (\(a\) XOR \(b\)) XOR \(c\) = \(a\) XOR (\(b\) XOR \(c\))
题意
https://codeforces.com/problemset/problem/1151/B
输入两个正整数 \(n, m(1 \leq n, m \leq 500)\),随后输入一个 \(n \times m\) 的矩阵 \(a(0 \leq a_{i,j} \leq 1023)\)。
若你能在每一行找出一个数,并且使得这些数异或的结果严格大于 \(0\),则输出 \(TAK\),并在下一行输出每一行选择的列号;否则输出 \(NIE\)。
题解
要使得 \(n\) 个数的异或值严格大于 \(0\),那么只需要使得其中一个二进制位的异或结果不为 \(0\)即可。
根据异或运算的特性,易知同一个二进制位上 \(1\) 的个数若为奇数,那么该位最后的计算结果必定为 \(1\)。
参考代码
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
using namespace std;
constexpr int N = 507;
int n, m;
int a[N][N];
vector<int> zero[N][10], one[N][10];
int main() {
IOS
cin >> n >> m;
for (int i = 1; i <= n; ++ i) for (int j = 1; j <= m; ++ j) cin >> a[i][j];
//只要让某一位的异或不为0,结果就必定不为0
for (int i = 0; i < 10; ++ i) {
int p = 0, q = 0;
for (int j = 1; j <= n; ++ j) {
for (int k = 1; k <= m; ++ k) {
if (a[j][k] >> i & 1) one[j][i].emplace_back(k);
else zero[j][i].emplace_back(k);
}
if (one[j][i].size() == 0) p ++;
else if (one[j][i].size() == m) q ++;
}
int r = n - p - q;
if ((q & 1) || r > 0) {
cout << "TAK\n";
bool flag = q & 1 ? false : true;
for (int j = 1; j <= n; ++ j) {
int sz = one[j][i].size();
if (sz == 0 || sz == m) cout << "1 ";
else if (flag) {
cout << one[j][i].front() << ' ';
flag = false;
} else cout << zero[j][i].front() << ' ';
}
return 0;
}
}
cout << "NIE\n";
return 0;
}
【异或运算】codeforces 1153 B. Dima and a Bad XOR的更多相关文章
- 网络误区:不用中间变量交换2个变量的value,最高效的是异或运算.
本文记录了不使用中间变量交换2个变量的value,很多的网络留言说是直接异或运算就可以了,而且效率很高,是真的吗? 这里简单的说一下我的环境:Win7 32位,Qt creator 5.4.1 编译器 ...
- C、C++、Java异或运算交换变量变量值的区别
今天看到一位大神的博客,深受感触.决定也发一篇博客,证明一下我还活着. 于是我翻看以前学习时做的一些笔记,整理了一下,得到了一个关于异或运算交换变量变量值的笔记. 首先来看下面三组表达式,看起来他们都 ...
- HDOJ 1287 破译密码(异或运算)
Problem Description 有个叫"猪头帮"的国家,采用一种简单的文法加密,他们所用的语言里面只有大写字母,没有其他任何字符:现在还知道他们加密的方法是:只用一个大写字 ...
- hdu2095 像水题的不错题 异或运算
异或运算的基础有点忘记了 先介绍一下..2个数异或 就是对于每一个二进制位进行位运算 具有2个特殊的性质 1.一个数异或本身恒等于0,如5^5恒等于0: 2.一个数异或0恒等于本身,如5^0恒等于5. ...
- bis和bic命令实现或和异或运算
从20世纪70年代末到80年代末,Digital Equipment的VAX计算机是一种非常流行的机型.它没有布尔运算AND和OR指令,只有bis(位设置)和bic(位清除)这两种指令.两种指令的输入 ...
- 二进制按位与(&) 按位或(|) 异或运算(^)
1.参加运算的两个数据,按照二进制进行按位与的运算. 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为 ...
- 基于c#的windows基础设计(学习日记1)【关于异或运算】
第一次接触异或运算,总体来说比哈希算法简单的多,无论是理解还是代码的难易度,唯一不好的是在固定了密钥之后,随机性就小了很多,所以安全性比起哈希算法还是有所差距. 原理在网站上很多都有所以就不再赘述了. ...
- MATLAB:图像的与、或、非、异或逻辑运算(&、|、~、xor)
图像的与.或.非.异或逻辑运算涉及到了&.|.~和xor符号 close all;%关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clc; clear all; I=imrea ...
- BZOJ4103 异或运算
4103: [Thu Summer Camp 2015]异或运算 Time Limit: 20 Sec Memory Limit: 512 MB Description 给定长度为n的数列X={x1 ...
- 对java位运算之异或运算的一点记录
首先,异或运算是,每个位上的数不同为1,相同为0. 其次,对两个数值变量的值进行三次异或运算就等于是交换了两个变量的值. 例如: int a = 4; int b = 10; a = a ^ b; b ...
随机推荐
- MyBatis——案例——查询-多条件查询(多参数接收的三种方法)
查询-多条件查询 编写接口方法:Mapper接口 参数:所有条件查询 List<Brand> selectByCondition(int status,String com ...
- ARMv8 寄存器
本文主要介绍 Armv8/v9 指令集架构中常用部分,详细的还是要看 Arm architecture reference manual. ARMv8 架构 ARMv8 架构支持3种指令集: T32, ...
- 2021年9月国产数据库排行榜-墨天轮:达梦奋起直追紧逼OceanBase,openGauss反超PolarDB再升一位
2021年9月国产数据库排行榜已在墨天轮发布,本月参与排名的数据库总数达到了142个. 一.9月国产数据库流行度排行榜前15名 先来看看排行榜前五名,虽然PingCAP的TiDB分数本月下降31.82 ...
- 使用Swagger的好处
是一个规范和完整的框架 用于生成.描述.调用和可视化RESTful风格的Web服务 接口的文档在线自动生成 功能测试
- VM Ware 安装mac OS xxx 系统
1. unlock 文件破解Vm Ware 默认不能安装苹果系统 :https://drive.google.com/file/d/1_AUeYh5JYltqjnuztQh-5UTomAIVBcLZ/ ...
- kotlin类和对象—>接口
1.接口定义,使用关键字interface 来定义接口 interface MyInterface { fun bar() fun foo() { // 可选的方法体 } } 2.实现接口,一个类和对 ...
- 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(4)
1.问题描述: 目前华为推送API使用的是v2或者v1版本,请问目前最新的鸿蒙next使用v3版本是否兼容v2或者v1,反过来将v2或者v1的api可以推送鸿蒙next的设备吗? 解决方案: v3接口 ...
- 终于注册成功了 Web of Science 账号
地址: https://www.webofscience.com/wos/op/publications/add 个人主页: https://www.webofscience.com/wos/auth ...
- 深度学习优化器:《Lookahead Optimizer: k steps forward, 1 step back》
深度学习优化器:<Lookahead Optimizer: k steps forward, 1 step back> 项目地址: https://github.com/michaelrz ...
- orange pi 香橙派 zero 刷openwrt当作有wifi的小路由器用
前面写过我用香橙派zero来测量温度 https://www.cnblogs.com/jar/p/15848178.html 最近准备把他改造成路由器 https://www.right.com.cn ...