首页 > 其他分享 >【异或运算】codeforces 1153 B. Dima and a Bad XOR

【异或运算】codeforces 1153 B. Dima and a Bad XOR

时间:2024-11-25 23:11:12浏览次数:6  
标签:Dima XOR 运算 int 异或 leq Bad 二进制位

前言

异或运算:是一种在二进制数系统中使用的逻辑运算。它的基本规则是对两个二进制位进行比较,如果这两个位不同,则结果为 \(1\);如果相同,则结果为 \(0\)。

异或运算的规则

  • \(0\) XOR \(0\) = \(0\)
  • \(0\) XOR \(1\) = \(1\)
  • \(1\) XOR \(0\) = \(1\)
  • \(1\) XOR \(1\) = \(0\)

特性

  1. 自反性:任何数与自身进行异或运算的结果均为 \(0\)
  2. 零和性:任何数与 \(0\) 进行异或运算都是其本身
  3. 交换律:异或运算符合交换律,即 \(a\) XOR \(b\) = \(b\) XOR \(a\)
  4. 结合律:异或运算符合结合律,即 (\(a\) XOR \(b\)) XOR \(c\) = \(a\) XOR (\(b\) XOR \(c\))

题意

https://codeforces.com/problemset/problem/1151/B

输入一个 \(n \times m(1 \leq n, m \leq 500)\) 的矩阵 \(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;
}

标签:Dima,XOR,运算,int,异或,leq,Bad,二进制位
From: https://www.cnblogs.com/RomanLin/p/18568266

相关文章

  • springboot接口,放回404 Bad Request
    分析:这种报错,通常都是json格式有误,导致的,比如说接口接受的对象是JSONArray,但是传进来的参数是JSONObject类型2024-10-1610:39:07.555WARN18536---[io-8688-exec-10].w.s.m.s.DefaultHandlerExceptionResolver:Resolved[org.springframework.http.converter.HttpMessag......
  • 使用宝塔快速搭建配置Openai api接口代理+502 Bad Gateway网关错误问题解决
    本教程提供了一种简便快捷的方法,无需复杂步骤,极易操作,实现零代码、零部署的快速接入。实现准备1.服务器,这里使用阿里香港轻量服务器)2.OpenAI官方的模型apikey3.使用第三方系统或插件进行测试关于第三方网站系统或插件:《SparkAI系统介绍文档-渐进式AIGC系统》开......
  • Nginx反向代理出现502 Bad Gateway问题的解决方案
    ......
  • el-tabs 搭配 el-badge微章使用
    实现效果 实现: <el-tabsv-model="activeName"class="demo-tabs"@tab-click="handleClick"><el-tab-panelabel="审批中"name="inProcess"><InProcess/></el-tab-pane&......
  • P10471 最大异或对 The XOR Largest Pair(01trie)
    #include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvector<string>VS;typedefvector<int>......
  • 大模型微调j技术:GaLore、BAdam、Adam-mini、DoRA、LongLoRA、LLaMA Pro、Mixture-of-D
    引言1.1大模型微调的重要性随着人工智能技术的飞速发展,大型语言模型(LLMs)如GPT-3、BERT等已经成为自然语言处理(NLP)领域的核心技术。这些模型通过在大规模文本数据上的预训练,掌握了丰富的语言知识和统计特征。然而,尽管这些预训练模型在通用任务上表现出色,但在特定任务或领......
  • CF1993E Xor-Grid Problem
    结论,异或,状压DP2300Link:https://codeforces.com/problemset/problem/1993/E。先考虑一维的情况。若只有一维,每次操作的结果和[AGC016D]XORReplace是一样的。对\(a_i\)进行一次操作相当于令\(a_i:=\oplus_{1\lei\len}a_i\),再对\(j\)进行一次操作相当于令\(a_j:=......
  • C++ 使用终端GDB调试复杂项目中Segmentation Fault 和 std::bad_alloc问题
            近期在公司虚拟机上写代码遇到SegmentationFault和std::bad_alloc问题,但是项目庞大,在不了解功能、代码连接关系的时候很难追踪具体是什么地方出了问题。网络上许多关于GDB的教程仅仅停留在简单的示例中的调试,对于复杂的项目结构(多文件,多作用域,......)来说显......
  • 网站提示“502 Bad Gateway:网关或代理服务器从上游服务器收到无效响应”错误如何解决
    对于网站管理员或开发者检查高防IP配置:如果使用了高防IP服务,确保其配置正确,没有错误的路由或规则。检查负载均衡器或代理服务器配置:确保负载均衡器或代理服务器的配置正确,没有指向错误的服务器地址或端口。检查服务器健康状况:确认上游服务器是否处于工作状态,可以......
  • [ABC367G] Sum of (XOR^K or 0)
    MyBlogs[ABC367G]Sumof(XOR^Kor0)考虑求出\(ans_i\)表示选了\(m\)的倍数个数,异或和是\(i\)的方案数再统计答案。先考虑\(m=1\)怎么做。相当于是\(ans_i=[x^i]\prod_j(x^0+x^{a_j})\),这里的乘法是异或卷积。如果直接xor-FWT复杂度不如暴力。令\(F_i(x)\)表......