AT_test001_g.アルファベット探し
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
高桥君被朋友出了一道这样的谜题。
首先,给定如图 1 所示的 7 行 7 列、共 49 个格子的黑白图形 A,B,C。

图 1:给定的 A,B,C 形状
请你回答,在给定的图中,分别有多少个 A,B,C 的形状。给定的图中所有的黑色格子都属于 A,B,C 的一部分,且不会出现 A,B,C 以外的其他图形。
此外,A,B,C 的形状可以任意按正整数倍放大,放大后的形状也视为相同的形状。因此,图 2(a) 中的 3 个 A 都要计为 A。
另外,如图 2(b) 所示,90 度的旋转也视为相同的形状。

图 2(a):2 倍、3 倍放大的 A 的例子
图 2(b):旋转后的 A 的例子
需要注意的是,A,B,C 的形状是包含周围的白色格子的,判断是否为某个字母时要考虑周围的白格。如图 3 所示,构成 A 的 7 行 7 列区域和构成 B 的 7 行 7 列区域不会重叠,输入不会出现这样的情况。

图 3:不会作为输入出现的重叠图形的例子
请你回答,在给定的图中,A,B,C 的形状分别各有多少个。
输入按如下格式从标准输入给出。
输入格式
输入共 H+1 行。
- 第 1 行包含两个整数 H(表示给定图的行数,1≤H≤1000)和 W(表示给定图的列数,1≤W≤1000),用空格隔开。
- 接下来的 H 行,每行包含 W 个字符,表示图的状态 c(i,j)(0≤i≤H−1,0≤j≤W−1)。
- 第 i+2 行第 j+1 个字符 c(i,j) 为
.或o,表示第 i+1 行第 j+1 列的格子的状态:.:该格子为白色。o:该格子为黑色。
- 图中不会出现 A,B,C 以外的图形。
- A,B,C 的图形不会重叠。
- 第 i+2 行第 j+1 个字符 c(i,j) 为
输出格式
请按 A,B,C 的顺序,用空格隔开,在一行中输出 A 的个数、B 的个数、C 的个数。
同一行末尾输出换行符。
说明/提示
- A,B,C 的形状可以任意正整数倍放大,也可以以 90 度为单位旋转。
- 输入保证所有黑色格子都属于 A,B,C 的一部分,且 A,B,C 之间不会重叠。
- 输入数据规模较大,请注意程序效率。
样例输入 1:
7 7
.......
...o...
..o.o..
.o...o.
.ooooo.
.o...o.
.......
样例输出 1:
1 0 0
说明:有 1 个 A,没有 B 和 C。
样例输入 2:
7 14
..............
.oooo....oooo.
.o...o..o...o.
.oooo....oooo.
.o...o..o...o.
.oooo....oooo.
..............
样例输出 2:
0 2 0
说明:有 2 个 B(一个正常方向,一个 180 度旋转)。
样例输入 3:
14 42
..........................................
.................o...o........o.o.........
....oooooo.......ooooo.......o.o.o........
....oooooo.......o...o.......o.o.o........
..oo......oo......o.o........o.o.o........
..oo......oo.......o.........ooooo........
..oo......................................
..oo......................................
..oo......oo............ooo...............
..oo......oo...........o...o..............
....oooooo.............o...o..............
....oooooo.............o...o..............
........................o.o...............
..........................................
样例输出 3:
1 1 2
说明:有 1 个 180 度旋转的 A,1 个逆时针 90 度旋转的 B,1 个顺时针 90 度旋转的 C,1 个 2 倍放大的 C。
样例输入 4:
6 8
........
........
........
........
........
........
样例输出 4:
0 0 0
说明:没有 A,B,C。
样例输入 5:
40 40
........................................
..ooo.....o.................ooo.........
.o...o...o.o....oooo.......o.o....o.o...
.o......o...o..o...o......o..o...o...o..
.o...o..ooooo...oooo.......o.o...o...o..
..ooo...o...o..o...o........ooo..o...o..
................oooo..............ooo...
........................................
...........................o.o..........
..........................o.o.o.........
.........ooo..............o.o.o.........
........o...o.............o.o.o.........
..ooo...o...o..ooooo......ooooo.........
.o...o..o...o..o.o.o....................
.....o...o.o...o.o.o..............o.o...
.o...o.........o.o.o.............o.o.o..
..ooo...........o.o..............o.o.o..
.................................o.o.o..
.................................ooooo..
...........................oooo.........
..........................o...o.........
...........................oooo.........
.................ooo......o...o.........
................o...o......oooo.........
..oooooo........o.......................
..oooooo........o...o...................
....oo..oo.......ooo...............oooo.
....oo..oo........................o...o.
....oo....oo.......................oooo.
....oo....oo......................o...o.
....oo..oo.........................oooo.
....oo..oo..............................
..oooooo................................
..oooooo................ooo.............
.................ooo.....o.o......o.o...
................o...o....o..o....o.o.o..
................o........o.o.....o.o.o..
................o...o...ooo......o.o.o..
.................ooo.............ooooo..
........................................
样例输出 5:
4 7 6
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?