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)\)。代码。

浙公网安备 33010602011771号