QOJ.ac

QOJ

حد الوقت: 2.0 s حد الذاكرة: 256 MB مجموع النقاط: 100 تفاعلية

#18099. 硬币游戏

الإحصائيات

这是一个交互式问题。

Taja 可以轻松赢得这个游戏,但她的朋友们都做不到。现在她邀请你来玩这个游戏。

游戏设备包括一个 $n \times n$ ($5 \le n \le 40$) 的场地、一枚棋子、两枚硬币(COIN1, COIN2)、两颗带有基准方向的骰子(DICE1, DICE2)以及许多大小为一格的方块。

名称 面数
COIN1. 移动硬币 2 SLIDE, RAM
COIN2. 修改硬币 2 PLACE, REMOVE
DICE1. 第一颗方向骰子 4 N (北), S (南), W (西), E (东)
DICE2. 第二颗方向骰子 8 N (北), S (南), W (西), E (东), NW (西北), NE (东北), SW (西南), SE (东南)

游戏开始前,棋子和一些方块被放置在场地上。随后玩家进行一系列操作。首先,玩家选择一枚硬币并投掷它以确定动作。然后,玩家选择一颗骰子并投掷它以确定方向 $dir$。之后会发生以下四种动作之一:

硬币字符串 动作
SLIDE 棋子沿 $dir$ 方向在空单元格中移动,直到棋子撞到方块或迷宫边界
RAM 棋子沿 $dir$ 方向在空单元格中移动,直到撞到第一个方块。然后棋子和该方块沿同一方向移动,直到移动的方块撞到另一个方块或场地边界
PLACE 如果 $dir$ 方向上棋子旁边的相邻单元格为空且在场地内,则在该单元格放置一个方块
REMOVE 如果 $dir$ 方向上棋子旁边的相邻单元格包含方块且在场地内,则移除该单元格中的方块

游戏目标是将棋子移动到终点单元格。本问题的一次查询包含一次硬币投掷和一次骰子投掷。

交互

首先,交互器会给出迷宫的大小、迷宫布局以及终点单元格的坐标。然后进行以下 4 步操作:

  1. 裁判程序显示棋子的坐标,或通知棋子已到达终点。
  2. 你的程序显示硬币名称。
  3. 裁判程序显示硬币上的动作名称。
  4. 你的程序显示骰子名称。
  5. 裁判程序显示骰子上的方向名称以及动作 "RAM" 的附加信息。

输入格式

标准输入的第一行包含一个整数 $n$ —— 迷宫的大小。接下来的 $n$ 行包含 $n$ 个字符,"." (ASCII 46) 或 "#" (ASCII 35),分别表示空单元格和有方块的单元格。 下一行包含两个整数 $r_f$ 和 $c_f$ —— 终点单元格的行号和列号。 左上角为 $(1, 1)$,右下角为 $(n, n)$。终点单元格和初始单元格均为空。 接下来的组描述了每一步:

  • 每组的第一行包含两个整数 $r, c$ —— 棋子的行号和列号,如果棋子到达了终点,则为 $(-1, -1)$。
  • 下一行包含硬币上显示的动作名称。
  • 下一行包含骰子上显示的方向名称。
  • 如果当前动作为 "RAM",接下来的两个字符串包含两个整数 $r_1, c_1$ 和 $r_2, c_2$,表示棋子撞到了坐标为 $(r_1, c_1)$ 的方块,并将该方块移动到了单元格 $(r_2, c_2)$。

北方向对应行号减小。南方向对应行号增加。西方向对应列号减小。东方向对应列号增加。 硬币或骰子的每一面出现的概率相同。

样例

输入格式 1

5
#....
.....
.....
.....
..#..
4 3
1 5
PLACE
W
1 5
RAM
S
6 5
6 5
5 5
RAM
W
5 3
5 1
5 2
PLACE
NE
5 2
RAM
NE
4 3
2 5
3 4
REMOVE
NE
3 4
PLACE
S
3 4
SLIDE
W
3 1
RAM
S
5 1
5 1
4 1
SLIDE
E
-1 -1

输出格式 1

COIN2
DICE1
COIN1
DICE1
COIN1
DICE1
COIN2
DICE2
COIN1
DICE2
COIN2
DICE2
COIN2
DICE1
COIN1
DICE1
COIN1
DICE1
COIN1
DICE1

样例迷宫的初始状态

路径表示如下:

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.