2134A. Painting With Two Colors
题意
给定三个正整数 $n, a, b$。
有一排 $n$ 个格子,每个格子初始颜色为白色。你需要进行以下两步操作:
- 选择 $a$ 个连续的格子,将这些格子涂成红色;
- 选择 $b$ 个连续的格子,将这些格子涂成蓝色。
蓝色会覆盖红色。
请问是否存在一种涂色方案使得这一排格子是左右对称的?
题解
考虑更简单的版本:只需要涂 $b$ 个格子为蓝色,那么涂成蓝色的部分必须处于正中间。
什么情况下可以处于正中间呢?$1$ 号格子到蓝色区域左端的距离等于蓝色区域右端到 $n$ 号格子的距离,即 $n = b + 2 \cdot k$,$k$ 表示 $1$ 号格子到蓝色区域左端的距离。稍加分析即可得出结论:$n$ 和 $b$ 的奇偶性必须一样。
回到原来的问题,存在两种可能:
- $a \leq b$,此时把红色涂到能被蓝色覆盖的地方就可以了;
- $a > b$,这时红色也需要是左右对称的,与蓝色同理,$n$ 和 $a$ 的奇偶性也必须一样。
参考代码
Code (C++)
qwe