QOJ.ac

QOJ

Time Limit: 3.0 s Memory Limit: 256 MB Total points: 100

#6094. 史诗级胜利!

Statistics

石头剪刀布游戏由两名玩家同时出招进行:石头(Rock)、布(Paper)或剪刀(Scissors)。如果双方出招相同,则为平局。否则,石头胜剪刀,布胜石头,剪刀胜布。

上述过程可以重复多次。在本题中,两个有限状态机(FSM)将在多轮比赛中进行对抗。(形式上,本题中的 FSM 指的是 Moore 型状态机。)

用于玩石头剪刀布的 FSM 拥有有限个状态。每个状态由以下信息描述:FSM 在下一轮中将出的招式,以及在对手分别出石头、布、剪刀时,FSM 将转移到的新状态。

幸运的是,你了解对手的 FSM——除了一个细节:你不知道该 FSM 的初始状态。

你的任务是设计你自己的 FSM 来对抗给定的 FSM。你的 FSM 必须在最初的 10 亿轮中至少赢得 99% 的轮次。这就是我们所说的史诗级胜利(epic win)!

输入格式

输入文件包含对手 FSM 的描述,格式如下:

第一行包含一个整数 $n$ ($1 \le n \le 100$),表示 FSM 中的状态数。状态编号为 $1$ 到 $n$。接下来的 $n$ 行,每行包含一个状态的描述:一个字符 $c_i$ 表示 FSM 出的招式,以及三个整数 $r_i, p_i, s_i$ 分别表示在看到对手出石头、布、剪刀时转移到的下一个状态($c_i$ 可以是 "R"、"P" 或 "S";$1 \le r_i, p_i, s_i \le n$)。

输出格式

按相同格式输出你设计的 FSM 的描述。

你设计的 FSM 的初始状态为第 1 个状态。

状态总数不得超过 $50\,000$。

样例

输入 1

2
R 1 1 2
P 2 2 1

输出 1

2
P 1 2 1
S 1 1 1

说明

题目中的图片展示了上述样例输入中给出的对手 FSM,以及样例输出中给出的你的一种可能的解决方案。

对手 FSM 会一直出石头或布(取决于其初始状态),直到它看到剪刀——看到剪刀会触发其行为的改变。

击败这种 FSM 的一种方法是出布。如果对手一直出石头,只需持续出布即可获胜。如果对手 FSM 出布,则通过出一次剪刀触发它转变为出石头,之后它将一直出石头,而你将通过持续出布来击败它。

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.