#P16489. [GKS 2014 #C] Tetris

[GKS 2014 #C] Tetris

题目描述

俄罗斯方块(Tetris)是一款著名的电子游戏,几乎每个人都玩过。在本题中,你需要模拟它的一个简化版本。

在我们的版本中,游戏在一个宽度为 WW、高度为 HH 的场地中进行,并受到重力影响。最初,场地是空的。随后,四格骨牌开始从场地上方依次下落。每个四格骨牌一旦接触到其他四格骨牌或场地底部就会立即停止。

游戏有一个有趣的特性叫做“消除行”。一旦某一行被四格骨牌填满,它就会被消除。一次可能消除多行。例如:

 |..............|     |..............|     |..............|
 |.............o|     |..............|     |..............|
 |.............o|     |..............|     |..............|
 |.............o|     |..............|     |..............|
 |.............o|     |..............|     |..............|
 |..xx..........| --> |..xx..........| --> |..............|
 |xxxxxxxxxxxxx.|     |xxxxxxxxxxxxxo|     |..............|
 |xxxxxxxxxxxxx.|     |xxxxxxxxxxxxxo|     |..xx..........|
 |xx..xxxxxxxxx.|     |xx..xxxxxxxxxo|     |xx..xxxxxxxxxo|
 |xxxxxxxxxxx...|     |xxxxxxxxxxx..o|     |xxxxxxxxxxx..o|
 ----------------     ----------------     ----------------
 下落中              停止                消除了 2 行

注意,在此简化版本中,消除行后“悬空”的四格骨牌方块不会继续下落。这就是为什么最顶上的两个方块会保持在原位。因此,尽管在原版俄罗斯方块中会发生连锁消除,这里并不会发生。

当所有给定的四格骨牌都放置完毕,或者由于达到场地高度限制而无法放置当前四格骨牌时,游戏结束。

在本题中,每个四格骨牌的类型、旋转角度以及下落位置均由输入给出。它们将从场地的上方开始下落。你的目标是模拟并得出每局游戏的最终结果。

输入格式

1   2   3   4   5   6   7
x   x   x   x   xx  x   x
xx xx   x   x   xx  x  xxx
 x x    xx xx       x
                    x 

四格骨牌的旋转由一个数字 rr 表示。rr 可以是 00112233。旋转方向为逆时针。例如:

r=0 r=1 r=2 r=3
  x   x xxx x
 xxx xx  x  xx
      x     x
 x   xx x    xx
 xx xx  xx  xx
  x      x

水平下落位置由一个数字 xx 表示。它是四格骨牌包围盒左下角方块的坐标。此处 xx00 开始。

输入的第一行给出测试用例的数量 TT。对于每个测试用例,第一行输入包含 33 个整数 WWHHNNWW 是宽度,HH 是高度,NN 是将要下落的方块数量。

接下来的 NN 行,每行包含 33 个整数 tit_irir_ixix_itit_i 指明四格骨牌的类型。rir_i 是该四格骨牌的旋转角度。xix_i 是该四格骨牌的水平下落位置。保证 xix_i 会使四格骨牌在水平方向上位于场地内部。

输出格式

对于每个测试用例,首先输出一行“Case #i:”,其中 i 是测试用例编号(从 11 开始)。然后,如果游戏在 NN 个方块下落之前结束,输出“Game Over!”(不含引号)。否则,输出游戏场地的最终状态,状态应包含 HH 行,每行 WW 个字符。每个字符可以是 '.' 或 'x'。

5
8 6 1
1 0 0
5 4 1
1 1 1
5 6 3
5 0 0
5 0 2
3 2 3
6 4 3
6 2 0
6 2 0
6 2 0
6 4 2
6 0 0
6 0 1
Case #1:
........
........
........
x.......
xx......
.x......
Case #2:
.....
.....
..xx.
.xx..
Case #3:
.....
.....
.....
.....
.....
...xx
Case #4:
Game Over!
Case #5:
xx....
xx....
xx....
xx....

提示

限制

1T1001 \le T \le 100

1ti71 \le t_i \le 7

0ri<40 \le r_i < 4

小数据集(测试集 1 - 可见)

4W204 \le W \le 20

1H201 \le H \le 20

0N1000 \le N \le 100

大数据集(测试集 2 - 隐藏)

4W1004 \le W \le 100

1H1001 \le H \le 100

0N50000 \le N \le 5000

翻译由 DeepSeek V4 Pro 完成