1182 : 图案的最小变换
时间限制Time Limit
1
秒Sec
内存限制Memory Limit
128
兆MB
提交次数Submitted
18 次Times
通过次数Solved
14 次Times
标准评测 Standard
从标准输入读入,结果写到标准输出。评测将输出拆成 token,与标准答案逐项比较,不按整段逐字节比对。
Read from standard input and write to standard output. The judge splits the output into tokens and compares them with the official answer; it does not compare raw bytes.
| 比对Compare | token 相同即通过。中间的空格、制表符、换行可多可少。Matching tokens pass. Extra spaces, tabs, or newlines between them are ignored. |
|---|---|
| 不同则错Differs | token 个数或内容不同即错误。23 与 2 3、02 与 2、2.0 与 2 均视为不同。A different token count or value is wrong. 23 vs 2 3, 02 vs 2, and 2.0 vs 2 all differ. |
| 输入Input | 标准输入,格式见题面。Standard input; format as in the statement. |
| 输出Output | 标准输出。Standard output. |
| 时间与内存Time and memory | 记这一份程序的 CPU 时间和内存峰值。题目上的时间限制、内存限制就是这一份的上限。The record is this program’s CPU time and peak memory. The limits on the problem apply to this one run. |
题目描述Description
给出一个正方形图案和它的变换图案,称为图案变换对。编写程序,求图案变换对之间的最小变换。图案是由黑白两种小方块构成的。可能的变换包括:
- 旋转 90 度:图案顺时针旋转 90 度,记做 rot90
- 旋转 180 度:图案顺时针旋转 180 度,记做 rot180
- 旋转 270 度:图案顺时针旋转 270 度,记做 rot270
- 竖直映像:图案以其上方的一条平行线为轴翻转,记做 vr
- 联合变换:图案首先做一次竖直映像变换,然后做一次旋转变换,记做 vr-rot90 或 vr-rot180 或 vr-rot270
- 保持:图案和变换后的图案完全一样,记做 idt
- 错误:无法应用上述变换将初始图案变换成它的变换图案,记做 imp
为了比较不同变换的大小,定义:旋转变换的代价小于映像变换,小角度旋转变换的代价小于大角度旋转变换,“保持变换”的代价最小。注意:对本题而言,只有上面列出的变换是合法的,如果某个图案对可以由多个变换得到,则应选择代价最小的变换。
输入格式Input
输入文件中包含多组图案变换对。每一对图案数据的起始行都是一个整数,表示正方形图案的边长 a(以一个小方块为单位, 1<=a<=100),后续的 a 行,每一行包含了原图案的一行和变换图案的对应行,两者之间用一个空格分开。黑色小方块用 b 表示,白色小方块用 o 表示。
输出格式Output
输出文件的每一行对应输入文件的每一个图案变换对。其中每行开始的整数表示对应图案对在输入文件中出现的序号,紧跟一个空格,然后就是该图案对的最小变换,采用上述记号表示。