专栏文章

【MX-X16-T1】「DLESS-3」XOR and Greater Sum 题解

P13683题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioef09z
此快照首次捕获于
2025/12/02 17:51
3 个月前
此快照最后确认于
2025/12/02 17:51
3 个月前
查看原文

约定

本文中所有的「位」指的是 二进制位

思路

~根据幼儿园数学~,两个数比较大小时,高位大的比高位小的更大。
于是,只要有一个集合异或和的某一位比另一个集合异或和的同一位更大,则前者的异或和更大。
在二进制下,上述情况只有一种可能:前者的该位为 11,后者该位为 00
根据异或的性质,前一个集合中有奇数个该位为 11,后一个集合中有偶数个该位为 11,即 全集中有奇数个该位为 11
因此,对于每一位,统计该位为 11 的数的个数,只要出现奇数,就有解;若都为偶数,则无解。
空间优化
由于只需要维护奇偶性,可以用 布尔数组bitset 维护。

代码

CPP
#include <bits/stdc++.h>
#define UP(i, l, r) for(int i = (l); i <= (r); ++ i)
using namespace std;
int t, n, a;
bool b[30], f;

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> t;
	while(t --){
		UP(j, 0, 29) b[j] = 0;
		f = 0;
		cin >> n;
		UP(i, 1, n){
			cin >> a;
			UP(j, 0, 29) b[j] ^= a >> j & 1;
		}
		UP(j, 0, 29) if(b[j]){
			f = 1;
			break;
		}
		cout << (f ? "Yes\n" : "No\n");
	}
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...