专栏文章
题解:P14005 棋盘游戏
P14005题解参与者 3已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @minydy0g
- 此快照首次捕获于
- 2025/12/02 10:22 3 个月前
- 此快照最后确认于
- 2025/12/02 10:22 3 个月前
P14005 棋盘游戏
题目概括
有一个无限大的棋盘上有一个黑子,有两种操作:
&\Huge{\bullet}\\
&\Huge{\bullet \bullet}\\
&\Huge{\bullet \bullet}\\
\\
&\Huge{\ \ \bullet}\\
&\Huge{\bullet \bullet}\\
&\Huge{\bullet \bullet}
\end{aligned}$$
两种操作均可反转五颗棋子的颜色,给出任意次反转后的棋盘中黑子的位置,问刚开始的黑子在哪。
### 思路
有很多人不太明白这题为什么可以输出任意位置,这里来证明一下。
首先,对于一个空白的区域。
$$\begin{aligned}
\Huge{\circ \circ}\\
\Huge{\circ \circ}\\
\Huge{\circ \circ}\\
\Huge{\circ \circ}\\
\Huge{\circ \circ}
\end{aligned}$$
我们可以先执行一遍操作一,
$$\begin{aligned}
\Huge{\circ \circ}\\
\Huge{\bullet \circ}\\
\Huge{\bullet \bullet}\\
\Huge{\bullet \bullet}\\
\Huge{\circ \circ}
\end{aligned}$$
再执行一遍操作二,
$$\begin{aligned}
\Huge{\circ \circ}\\
\Huge{\bullet \bullet}\\
\Huge{\circ \circ}\\
\Huge{\circ \circ}\\
\Huge{\circ \circ}
\end{aligned}$$
这样就可以凭空生成两个相邻的黑色棋子,并且周围的棋子不受影响。于是我们就可以在两个棋子下方执行相同操作再生成两个黑棋子。
$$\begin{aligned}
\Huge{\circ \circ}\\
\Huge{\bullet \bullet}\\
\Huge{\bullet \bullet}\\
\Huge{\circ \circ}\\
\Huge{\circ \circ}
\end{aligned}$$
最后只需要在这四个棋子上方执行一次操作一,
$$\begin{aligned}
\Huge{\bullet \circ}\\
\Huge{\circ \circ}\\
\Huge{\circ \circ}\\
\Huge{\circ \circ}\\
\Huge{\circ \circ}
\end{aligned}$$
哇!我们成功生成了单独的一个黑棋子!
于是对于棋盘上任意一个点,我们都可以用这个方法反转任意位置的棋子,那给出的黑棋子就一点意义都没有了。
### 代码
由于上述原理,我们甚至不用读入就可以通过这道题。
```cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
cout << 10000000 << " " << 10000000;
}
```相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...