题目描述
某一天,可爱的军军在玩消星星。如下图
这个游戏在一个n * m 的矩阵中进行。如上图就认为是一个8 * 12 的矩阵。初始的时候,方阵中的每个小方块都有一个颜色,红、⻩、绿、蓝或紫。如果某两个方块相邻(上、下、左、右4 个方向),且颜色相等,那么称这两个方块联通。
当军军选择一个方块,并且这个方块所在的联通块的大小大于等于3,那么这个联通块就会消失,同时玩家获得相应的分数。如果n 个方块消失,军军就会获得10 * n 的分数。
当然,方块会掉落。同时,如果某一列为空,那么右边的列就会向左靠。
然而,由于军军比较厉害,所以ta 的游戏里还多了几种操作。总共有如下操作:
1、选中一个方块,尝试消除(如果存在);
2、将整个图顺时针旋转90 度;
3、将整个图逆时针旋转90 度;
4、选中一个位置,以那个位置为中心,向四个方向,每个方向两个,那些方块会消失。就是一个“十”字型,共9个。不会消除联通块,得5 成功消去方块的个数分(如果位置上本来就没有方块就不算入内)。
5、改变某个方块的颜色(如果存在)。
每个操作后,方块会掉落、列会向左靠。
现给出初始的矩阵和军军的操作序列,问最后军军的得分和最后矩阵的状态。
同时,你需要输出每个操作的状态结果。对于1、5 两种操作,若选中的位置不存在方块,就输出”Normal”。对于剩余情况输出”Abnormal”。
输入
第一行一个数t,表示数据组数。
对于每一组数据,
第一行3 个正整数n,m,k,表示原矩阵的行数、列数和操作总数。
接下来n 行,每行一个⻓为m 的字符串,由R、Y、G、B、P 构成,分别表示红、⻩、绿、蓝、紫。
接下来k 行,每行三个正整数opt; x; y 一个字符ch。opt 表示操作序列;x; y 表示选中方块的坐标(如果有的话);ch 表示将方块变成的颜色(如果有的话)。注意:应当忽略那些没有用的参数。
t <= 10
所有正整数均小于等于100,所有字符保证合法,保证坐标合法。
输出
前k 行,每行一个字符串,为”Abnormal” 或”Normal”。
后一行输出一个正整数,表示最后得分。
下一行输出两个正整数,表示最后矩阵的大小。应为n m 或m n。
后面若干行每行一个字符串,由R、Y、G、B、P、E 构成,分别表示红、⻩、绿、蓝、紫、空。
样例输入
2
2 3 3
RYG
YGB
2 1 1 G
3 2 2 B
3 2 3 Y
2 3 5
RRR
GYG
1 1 1 G
5 1 2 G
5 2 2 G
1 1 1 G
1 2 1 G
样例输出
Abnormal
Abnormal
Abnormal
0
3 2
GB
YG
RY
Abnormal
Normal
Abnormal
Normal
Abnormal
60
2 3
EEE
EEE
来源/分类