#4230. 连接6(Connect 6)

连接6(Connect 6)

题目描述

小高有一个N×NN × N的网格,每个方格要么是黑色要么是白色。网格的状态由 NN 个字符串 SiS_i 表示。如果 SiS_i 的第 j 个字符是 '#',则从上往下第 ii 行、从左往右第 jj 列的方格是黑色的。如果是 '.',则该方格是白色的。小高最多可以选择两个白色方格并将它们涂成黑色。判断是否可能使网格中出现 6 个或更多连续的黑色方格,这些方格可以是垂直、水平或对角线排列的。这里,如果 N×NN × N 的网格完全包含一个 6 × 6 的子网格,且该子网格的至少一条对角线上的所有方格都是黑色的,则认为网格中出现了对角线排列的 6 个或更多连续的黑色方格。

输入格式

输入从标准输入中给出,格式如下:

NN

S1S_1

S2S_2

\vdots

SNS_N

输出格式

如果通过涂黑最多两个方格可以满足条件,则输出 "Yes";否则,输出 "No"。

样例

8
........
........
.#.##.#.
........
........
........
........
........
Yes
6
######
######
######
######
######
######
Yes
10
..........
#..##.....
..........
..........
....#.....
....#.....
.#...#..#.
..........
..........
..........
No

样例解释

【样例1说明】
通过将第 3 行从左数第 3 个和第 6 个方格涂黑,可以使水平方向上出现 6 个连续的黑色方格。
【样例2说明】
虽然小高不能选择任何方格涂黑,但网格已经满足条件。

数据范围

6N1000,Si=N6 \leq N \leq 1000, |S_i| = N, SiS_i 仅由 '#' 和 '.' 组成。

来源

  • AtCoder ABC241C