Loading

AT_agc043_b [AGC043B] 123 Triangle

遇到这种题,我觉得最关键的一步是想答案为啥时的必要充分条件是啥。

首先你得观察到答案只会是 \(0, 1, 2\) 中的一个。

你先这么想,序列里有 \(1, 2, 3\),由于 \(3\) 我们肯定很不好处理,因为其与 \(1, 2, 0\) 有很多个运算结果,我们此时希望把 \(3\) 干掉。于是顺理成章想到第一步,我们先做一次操作,这样序列中就只剩下了 \(0, 1, 2\)

更进一步,我们希望办掉 \(1, 2\) 中的一个,由于 \(0\) 是没有影响的,所以我们不用管 \(0\)

  • 先考虑把 \(1\) 给干掉,此时只有 \(2\),答案只有可能是 \(0, 2\),将过程中所有数除以 \(2\),发现就会变成 \(0, 1\) 的情况了。
  • 考虑把 \(2\) 给干掉,此时就只有 \(0, 1\) 的情况了。

那么现在就只剩 \(0, 1\)\(0, 1, 2\) 的情况了。

更加一步,如果序列里有 \(1\),那么答案只有可能是 \(0, 1\),因此在第一步我们已经把相邻没有贡献 \(1\) 给干掉了,那么最后答案一定会有 \(1\) 的贡献的,所以此时答案也只有可能是 \(0, 1\)

因此我们只需要考虑 \(0, 1\) 的情况就好了,并且我们可以把差分转化为异或操作。

posted @ 2025-09-05 14:45  Alexande  阅读(7)  评论(0)    收藏  举报