CF2108B 学习笔记
一道恶心的分类讨论。
进入正题
首先最简单的情况:
- \(n=1\),即 \(a=x\),由于题目中说 \(a\) 为正整数,所以当 \(x \ge 0\) 时有解 \(a_1=x\)。
- \(x=0\),即 \(\oplus_{i=1}^n a_i=0\),考虑根据 \(n\) 的奇偶性再分类讨论:
- \(n\) 为奇数,则前面 \(n-2\) 个 \(1\) 后面两个放 \(2\) 和 \(3\) 即可,和为 \(n+3\)。
- \(n\) 为偶数,则全部放 \(1\) 即可,和为 \(n\)。
- \(x=1\) 和上面同理,\(n\) 为奇数和为 \(n\),偶数为 \(n+3\)。
对于其他情况:
考虑将二进制下的 \(x\) 的每一位分派到每一个 \(a_i\) 上,这样和就会最小。
此时:
- 若剩下的数的个数 \(\le 0\),直接返回 \(x\) 即可;
- 若剩下的个数为偶数,那么就全部设定为 \(1\);
- 若剩下的个数为奇数,那么可以找一个已经赋过值的 \(a_i\) 一起 \(+1\),显然一定可以找到一个使得 \(2^0=1\) 位处为 \(0\)。
按照上面的思路模拟即可。

浙公网安备 33010602011771号