QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 512 MB مجموع النقاط: 100 تواصل

#4833. 四面体拼图

الإحصائيات

Tetra-puzzle 是一款类似于俄罗斯方块的单人回合制游戏。游戏在一个 $5 \times 5$ 的方格棋盘上进行。初始时,棋盘为空。

在每一回合中,玩家必须在棋盘上放置一个指定种类的四格骨牌(tetramino)。四格骨牌是由四个相连的方格组成的图形。每块骨牌都可以旋转、翻转和平移,放置时必须占据棋盘上四个空的方格。放置后,检查棋盘上所有被填满的行和列,并将它们同时清除:这些行和列中的每一个方格都会重新变为空格。如果玩家无法进行移动,则判定为失败。

总共有五种四格骨牌。每种骨牌用一个大写英文字母表示,该字母的形状与骨牌的形状相似:

游戏有两种模式:基础模式和准备模式。在基础模式中,玩家依次获得 $n$ 个骨牌,必须在获得下一个骨牌之前放置好当前给定的骨牌。目标是成功完成所有 $n$ 次移动。

在准备模式中,玩家为基础模式中的下一场游戏进行规划。在准备阶段,玩家会立即获得 $n$ 对随机生成的骨牌:分别对应第 1, 2, ..., $n$ 次移动。对于每一对,玩家必须选择其中一个骨牌,该骨牌即为玩家在基础模式中对应回合将获得的骨牌。

你的任务是成功完成游戏,首先在准备模式下进行选择,然后在基础模式下使用准备好的骨牌完成游戏。

交互协议

在本题中,你的程序在每个测试点上会被运行两次。每一行输入均以换行符结尾。

在第二次运行期间,这是一个交互式问题。请记住在打印每次移动后立即刷新输出!

第一次运行

在第一次运行期间,你进行的是准备模式。第一行包含单词 “prepare”。第二行包含一个整数 $n$,表示回合数 ($1 \le n \le 1000$)。第三行包含 $n$ 个空格分隔的骨牌对:分别对应第 1, 2, ..., $n$ 次移动的两个选择。每一对由来自集合 “ILOTZ” 的两个大写字母给出,对应于该对中骨牌的种类。一对中的字母各不相同,且可以以任何顺序给出。在每个测试中,每一对都是预先随机选择的,从所有可能的选择中等概率选取,且与其他对的选择相互独立。

输出一行包含 $n$ 个字母(不含空格):对于每一回合,输出你选择的两个骨牌中的哪一个。

第二次运行

在第二次运行期间,你进行的是基础模式。第一行包含单词 “play”。第二行包含一个整数 $n$,表示回合数,与第一次运行相同 ($1 \le n \le 1000$)。随后是 $n$ 个回合。

在每一回合中,首先,程序读取一行,其中包含一个字母:第一次运行中为该回合选择的四格骨牌种类。作为响应,打印出已放置该骨牌后的棋盘,但要在清除填满的行和列之前。棋盘占用 5 行,每行包含 5 个字符。字符 “.” (点,ASCII 码 46) 表示空方格,字符 “#” (井号,ASCII 码 35) 表示在之前回合中占据的方格,字符 “*” (星号,ASCII 码 42) 表示放置在棋盘上的最新骨牌所占据的方格。

如果满足上述格式规则,但移动无效,程序将获得 “Wrong Answer”。

如果移动有效,所有填满的行和列将被清除,且占据的方格在后续回合中必须用 “#” 字符表示。之后进入下一回合。

如果所有 $n$ 个回合均已完成,程序将获得 “OK”。

样例

对于每个测试,第二次运行时的输入取决于第一次运行中程序的输出。以下展示了某程序在第一个测试点上的两次运行过程。空行仅为阅读方便而添加:实际运行中不会有空行。

样例输入 1

prepare
6
TO LO ZI LI LT LT

样例输出 1

OLZITT

样例输入 2

play
6
O
L
Z
I
T
T

样例输出 2

.....
**...
**...
.....
.....
..***
##..*
##...
.....
.....
..###
##**#
##.**
.....
.....
..###
..*..
##*##
..*..
..*..
***##
.*...
.....
.....
.....
.....
*#...
**...
*....
.....

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 1
IDTypeStatusTitlePosted ByLast UpdatedActions
#1576Off-topicOpen手玩aaron09192026-04-19 11:24:35View

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.