开始 2026-03-21 00:00:00

童织码编程:月赛A组——3

结束 2026-04-12 00:00:00
Contest is over.
当前 2026-06-10 08:14:35

D. 26年3月-A组(萌新)D. 迷宫探索

描述

小 A 正在参加一场迷宫探索竞赛。竞赛场地是一个由 N 行 M 列方格组成的矩形迷宫。在迷宫中,部分方格是平坦的通道(用 . 表示),部分方格则是坚硬的墙壁(用 # 表示)。

为了快速了解迷宫的结构,小 A 配备了一个高科技信号探测仪。小 A 可以将其放置在迷宫中的任意一个通道方格内。 探测仪一旦启动,会同时向上、下、左、右四个方向发射直线脉冲信号。

信号的传播规则如下:

1.信号只能在通道方格中传播。

2.信号在每个方向上都会沿直线行进,直到遇到墙壁迷宫边界为止。

3.被信号经过的所有通道方格(包括探测仪所在的那个方格)都会被探测仪记录下来。

小 A 希望找出一个最佳的放置位置,使得探测仪单次发射信号能够记录到的通道方格数量最多。

请你编写程序,帮助小 A 计算出,探测仪能记录到的通道方格的最大数量。

输入

输入第一行包含两个正整数 N 和 M,表示迷宫的行数和列数。

接下来的 N 行,每行包含一个长度为 M 的字符串,代表迷宫的布局。

其中 . 表示通道,# 表示墙壁,输入保证字符串中只包含这两种字符。

输出

输出一个整数,表示在最佳放置位置下,探测仪能够记录到的通道方格的最大数量。

样例

输入

4 6
#..#..
.....#
....#.
#.#...

输出

8

输入

8 8
..#...#.
....#...
##......
..###..#
...#..#.
##....#.
#...#...
###.#..#

输出

13

输入

12 15
...............
...#...........
.......#.......
...............
.....#.........
............#..
...............
..#............
...............
.......#.......
...............
....#..........

输出

26

提示

样例 1 说明:

若将探测仪放置在第 2 行第 2 列(行、列索引均从 1 开始计算):

·水平方向:可以探测到第 2 行中从第 1 列到第 5 列的所有通道(.),共 5 个方格。

·垂直方向:可以探测到第 2 列中从第 1 行到第 4 行的所有通道(.),共 4 个方格。

·合并记录:由于第 2 行第 2 列的方格在两个方向都被探测到了,因此总记录数为 5+4-1=8。

经过验证,这是该迷宫中放置探测仪的最优方案。

数据范围

对于 100% 的数据,满足 1≤N,M≤2000。

输入数据保证迷宫中至少存在一个通道方格(.)。


Submit

登录

注册
时间限制 1 秒
内存限制 128 MB
提交