专栏文章
【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 个月前
约定
本文中所有的「位」指的是 二进制位。
思路
~根据幼儿园数学~,两个数比较大小时,高位大的比高位小的更大。
于是,只要有一个集合异或和的某一位比另一个集合异或和的同一位更大,则前者的异或和更大。
在二进制下,上述情况只有一种可能:前者的该位为 ,后者该位为 。
根据异或的性质,前一个集合中有奇数个该位为 ,后一个集合中有偶数个该位为 ,即 全集中有奇数个该位为 。
因此,对于每一位,统计该位为 的数的个数,只要出现奇数,就有解;若都为偶数,则无解。
空间优化
由于只需要维护奇偶性,可以用 布尔数组 或
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 条评论,欢迎与作者交流。
正在加载评论...