QOJ.ac

QOJ

时间限制: 3.0 s 内存限制: 256 MB 总分: 100 交互

#6096. 五子棋

统计

这是一个交互式问题。

五子棋(Gomoku)是一个在二维网格上进行的双人游戏。网格的每个格子要么是空的,要么包含第一个玩家的棋子(黑色),要么包含第二个玩家的棋子(白色),不能同时包含两者。游戏开始时,整个网格是空的。两名玩家轮流落子,由第一个玩家先手。每一步,玩家可以将自己的棋子放入一个空的格子中。第一个在单行(横向、纵向或对角线)中连成五个棋子的玩家获胜。

第二个玩家(白棋)获胜的位置。

在本题中,玩家使用 $19 \times 19$ 的网格。如果整个网格被填满但没有玩家获胜,则判定为平局。

第一个玩家使用以下策略:第一步,她将棋子放在网格的中心。在随后的每一步中,她选择一个能使当前局面得分最大化的位置。

为了计算局面的得分,第一个玩家会考虑所有可能形成获胜组合的位置——换句话说,棋盘上所有横向、纵向和对角线方向上连续五个格子的行(当然,它们可能会相互重叠)。如果某一行同时包含第一个玩家和第二个玩家的棋子,则忽略该行。如果某一行没有任何棋子,也忽略该行。对于每一行,如果恰好有 $k$ ($1 \le k \le 5$) 个第一个玩家的棋子且没有第二个玩家的棋子,则将 $50^{2k-1}$ 加入到局面得分中。对于每一行,如果恰好有 $k$ 个第二个玩家的棋子且没有第一个玩家的棋子,则从局面得分中减去 $50^{2k}$。最后,在得分中加上一个 $0$ 到 $50^2 - 1$ 之间的随机整数。这个随机数是均匀分布的。

如果第一个玩家有多个移动方案得分相同(由于上述随机加数,这种情况很少见),第一个玩家会选择 $x$ 坐标最小的那个;如果 $x$ 坐标相同,则选择 $y$ 坐标最小的那个。

你的任务是编写一个程序,作为第二个玩家并击败该策略。你的程序将针对上述策略进行 100 场比赛,并使用不同的随机数生成器种子。你的程序必须赢得所有这些比赛。

交互

在每一步中,你的程序必须:

  1. 从输入中读取数字 $x$ 和 $y$。
  2. 如果这两个数字都等于 $-1$,则游戏结束,你的程序必须退出。
  3. 否则,这些数字是第一个玩家的落子坐标 ($1 \le x, y \le 19$)。
  4. 输出第二个玩家的落子坐标,并换行。不要忘记刷新输出缓冲区。

样例

在下面的示例中,第一个玩家没有使用题目描述中的策略。该示例仅用于说明交互格式。

样例输入 1

10 10
10 11
10 12
10 13
9 10
9 11
9 9
11 13
-1 -1

样例输出 1

11 10
11 11
10 9
10 14
8 9
11 9
11 12
11 8

示例中的最终局面。

说明

世界上有很多五子棋规则的变体。请仅考虑本题目描述中给出的规则。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.