ARC 208

A

如果只保留或中的位,就是可以减去任意,或不变小就可以。

发现最后不能操作就是,每一位只有一个数有值。对于不同的不限制的 Nim 游戏,sg 函数的值就是 \(\bigoplus_{i=1}^n a_i\)

那么 “每一位只有一个数有值” 相当于,对于一些数,减去一些 \(2^i\),并且减之前第 \(i\) 位是 \(1\)。那么不会又进位退位。一共减掉 \(2^k-1\),那么相对应发现 sg 异或 \(2^k-1\)

B

二分答案。对于 \(a_n=x\),显然最终 \(\sum \bmod\) 可以到 \(x-2\),现在的问题是,长度够不够。对于 \(a_i=x\),构造 \(a_{i-1}\) 使得可以减最多即可。那么就是 \(\frac{a_i}{2}+1\)(下取整)。

C

\(n\oplus c=x+kn\)

  • \(k=0\)。则 \(c\oplus n=x\)\(n=x\oplus c\)。在 \(x<n\) 成立。

  • \(k=1\)。则 \(c\oplus n=x+n\)\(\oplus\) 本质是什么?就是对于 \(c,n\) 都有的位 \(i\),给 \(n\) 的值 \(-2^i\),对于 \(c\)\(n\) 没有的,加 \(2^i\)。最终贡献和要等于 \(x\)。因为 \(n\) 是任意的,那么问题变成,\(c\) 中的位加 \(\pm 2^i\),能不能组成 \(x\)。显然 \(c\ge x\)。并且 \(c-x\) 就是两倍减去的总和。那么除以 \(2\),看是不是被 \(c\) 包含就可以了。\(n\) 不够大的时候加一个 \(2^{40}\)

  • \(k=2\)。则 \(c\oplus n=x+2n\)。因为 \(c\oplus n\le c+n\),则 \(x+2n\le c+n\),也就是 \(x+n\le c\)。因为 \(x<n\),所以 \(2n<c\)\(c\) 会比 \(x\) 多出一个高位,一定有 \(k=0\) 中的 \(n=x\oplus c\) 可行。那么 \(k\ge 2\) 不需要考虑。

posted @ 2025-10-12 22:26  SFlyer  阅读(17)  评论(0)    收藏  举报