时间线

  • 19:04-19:09 做 T1
  • 19:09-19:40 做 T2
  • 19:41-19:50 想 T3,然后放弃
  • 19:50-20:20 做 T4
  • 20:20-20:59 做 T3
  • 20:59-21:20 想 T5,然而没想出来

得分

题号 A B C D E F
得分 100 100 90 100 0 0

错因分析

C 袋鼠将军的神秘序列

知识点:构造,模拟
错因:清空数组时没有清空 vis[0]

多测记得数组的所有用到的位置都要清空(检查 0n 等特殊位置)。

E 袋鼠将军的魔法

知识点:位运算,线段树
错因:没有想到对字符进行状态压缩,转化为维护区间异或和问题。

不难发现,区间能重组为一个回文串,当且仅当区间内最多有 1 种字符出现了奇数次。考虑怎样维护某种字符在区间内出现次数的奇偶性。因为字符集很小,所以可以将字符状态压缩, 转化为 。这样,区间内最多有 1 种字符出现了奇数次就转化为了区间异或和二进制下最多有一位是 1。至于修改操作,可以看成循环左移 位,移位后超过了 26 位的部分补在低位。用线段树维护区间修改和区间异或和查询即可。