专栏文章

题解: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 条评论,欢迎与作者交流。

正在加载评论...