CF-2134 (Codeforces Round 1045, Div. 2) 题解

2134A. Painting With Two Colors

题意

给定三个正整数 $n, a, b$。

有一排 $n$ 个格子,每个格子初始颜色为白色。你需要进行以下两步操作:

  1. 选择 $a$ 个连续的格子,将这些格子涂成红色;
  2. 选择 $b$ 个连续的格子,将这些格子涂成蓝色。

蓝色会覆盖红色。

请问是否存在一种涂色方案使得这一排格子是左右对称的

题解

考虑更简单的版本:只需要涂 $b$ 个格子为蓝色,那么涂成蓝色的部分必须处于正中间。

什么情况下可以处于正中间呢?$1$ 号格子到蓝色区域左端的距离等于蓝色区域右端到 $n$ 号格子的距离,即 $n = b + 2 \cdot k$,$k$ 表示 $1$ 号格子到蓝色区域左端的距离。稍加分析即可得出结论:$n$ 和 $b$ 的奇偶性必须一样。

回到原来的问题,存在两种可能:

  • $a \leq b$,此时把红色涂到能被蓝色覆盖的地方就可以了;
  • $a > b$,这时红色也需要是左右对称的,与蓝色同理,$n$ 和 $a$ 的奇偶性也必须一样。

参考代码

Code (C++)
qwe
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计