#D. 强哥历险记——填字游戏

    传统题 1000ms 256MiB

强哥历险记——填字游戏

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

就像其他人一样, Petr强 也喜欢解谜填字游戏。不幸的是,她的姐妹 熊大 在填字游戏的书上把牛奶洒的到处都是,由于文本都被弄脏了,所以她很难找到每个单词的起点。你的任务就是帮助 Petr强 恢复每个单词的编号。

给你一个没有标记的填字游戏,它是一个 NNMM3N50,3M503 ≤ N ≤ 50, 3 ≤ M ≤ 50 )列的网格。有些格子是空的(通常是白的),有些格子是障碍(通常是黑的)。在这个设计中,单词编号是一个由以下两个逻辑步骤组成的简单流程:

步骤1:我们先决定每个格子是否是一个横向或者竖向单词的起点。如果一个格子是横向单词的起点,它必须是空的,它左边相邻的格子必须是障碍或者超出网格的边界,并且它右边两个格子必须是空的(也就是说,一个横向单词必须由 33 个或者更多字母组成)。对于格子是竖向单词起点的情况,规则是类似的,它上面的相邻格子必须是障碍或者超出边界,下面两个格子必须是空的。

步骤2:我们为每个单词开始的格子分配一个编号,就像你读书时的顺序一样,我们从 11 开始连续的为这些格子分配数字。最顶行的格子从左到右分配,然后第二行,以此类推。只有作为单词起点的格子需要分配编号。

例如,考虑如下网格,其中 . 表示一个空格, # 表示障碍。

...
#..
...
..#
.##

可以作为横向或者竖向单词的起点的格子在下方用 ! 标记。

!!!
#..
!..
..#
.##

如果我们为这些格子分配编号,可以得到如下结果:

123
#..
4..
..#
.##

注意输入数据中描述的填字游戏不一定满足常见的出版发行的填字游戏中的限制。例如,有些空格不一定属于某个单词。

输入格式

第一行包含 NNMM ,之间用空格隔开。

接下来 NN 行每行描述一排网格。每行包含 MM 个字符,字符是 . (空格)或者 # (障碍)。

输出格式

输出的第一行是单词的数量。

接下来的每一行,输出一个单词的起始格子的行和列(按照上述描述排序)。左上角的格子位置为 (1,1)(1, 1) 。右下角的格子位置为 (N,M)(N, M)

5 3
...
#..
...
..#
.##
4
1 1
1 2
1 3
3 1

提示

北京线下营入营分班测3(第三期)

未参加
状态
已结束
规则
IOI
题目
7
开始于
2024-8-18 19:00
结束于
2024-8-18 21:00
持续时间
2 小时
主持人
参赛人数
122