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\)

按照上面的思路模拟即可。

posted @ 2026-02-02 18:46  constexpr_ll  阅读(0)  评论(0)    收藏  举报