Codeforces Round #173 (Div. 2)

时间:2023-11-10 22:18:08

A. Bit++

  • 模拟。

B. Painting Eggs

  • 贪心,每个物品给使差值较小的那个人,根据题目的约数条件,可证明贪心的正确性。

C. XOR and OR

  • \(,,00 \to 00,01 \to 11,11 \to 01\)
  • 根据上述转换,只要至少存在一个1,则可以得到任意个数(不包括0)的1。全0时只能变成全0。
  • 那么判断a、b两种情况即可。

D. Yet Another Number Game

  • 当没有全减操作时,即相当于一个Nim游戏。
  • 当n=1时,直接判断 \(a_1\) 是否为0即可。
  • 当n=2时,DP或者套威佐夫博弈结论。
  • 当n=3时,DP(比较慢)。可类似Nim博弈证明包括全减操作时结论与Nim博弈的结论一样,即证明\(sg(i,j,k) = 0\) 时,\(sg(i - x, j - x, k - x)\) 必不为0。
  • \(sg(i,j,k) = 0\)时,\(i \oplus j \oplus k = 0\),考虑\(x\)二进制的最高位,若对应位置\(、、i、j、k\)的状态为\(011\),则显然减去\(x\)后,该位异或值不为0;若状态为\(000\),即最高位前移,同理异或值也不为0。

E. Sausage Maximization

  • 问题相当于去掉中间一段区间,使得最后的异或值最大。
  • \(val = all \oplus sxor(l,r) = all \oplus pre[r] \oplus pre[l - 1]\)
  • 当固定右端点\(r\)后,即相当于找\(all \oplus pre[l - 1]\) 与\(pre[r]\)异或值最大,那么只要建棵字典树即可。