ARC 205 A ~ C 题解

比赛传送门。罕见的在 CF 上有 -14 的场次(截至 2025.9.7)。

2025.9.8 更新:现在是 -43 了。

A. 2x2 Erasing

注意到,每个黑色格子的左边、上边、和左上一格都做不了操作。那我们干脆把它们都涂黑,这样所有白色格子都可以做操作。

则答案为区间内白色格子的个数。提前先把不能做操作的涂黑,然后二维前缀和预处理白色格子的个数即可。

注意回答询问时,最右边和最下边都不能做操作。

时间复杂度:\(O(N^2 + Q)\)代码

B. Triangle Toggle

先做一个转化,把黑边看作连了边,白边看做没连边。

我们考虑每个点的度数。

注意到,操作只能让度数 \(\pm 2\) 或不变,那么度数的奇偶性一定不变。那么一定存在一个操作序列,让每个点的度数都是同奇偶的最大值。

那么边数就是把最大度数加起来再除以 \(2\)

时间复杂度:\(O(N + M)\)代码

C. No Collision Moves

\([S_i, T_i]\) 看做区间。定义区间 \([L, R]\)方向\(\operatorname{sgn}(R - L)\)

若两个区间不相交,那么它们之间没有限制。

若两个区间是包含关系,那么无论如何都无解。

若两个区间相交,那么需要看它们分别的方向:

  • 同向:若方向为 \(1\),则靠右的先走;否则,靠左的先走。
  • 反向:一定无解。

于是先把区间按左端点排序。对于一串相交的区间,如果方向都为 \(1\),那么从右往左走;否则,从左往右走。注意判无解。

时间复杂度:\(O(N \log N)\)代码

posted @ 2025-09-07 13:14  David9006  阅读(26)  评论(0)    收藏  举报