#18007. C - 穿越

C - 穿越

题目描述

现有一个H行W列的网格。网格中从上往下数第i行、从左往右数第j列的单元格记为(i, j)。每个单元格内写有字符#(表示涂黑)或.(表示空白)。
设C[i][j]为单元格(i, j)内的字符。对于不满足1iH1 \leq i \leq H1jW1 \leq j \leq W(即超出网格范围)的整数i, j,定义C[i][j]为.

当正整数a, b, n满足以下所有条件时,由(a, b)以及(a+d, b+d)、(a+d, b-d)、(a-d, b+d)、(a-d, b-d)(其中1dn1 \leq d \leq n)组成的共4n + 1个单元格,被称为以(a, b)为中心、大小为n的“叉形”(Cross):

  1. C[a][b]为#
  2. 对于所有满足1dn1 \leq d \leq n的整数ddC[a+d][b+d]C[a+d][b+d]C[a+d][bd]C[a+d][b-d]C[ad][b+d]C[a-d][b+d][ad][bd][a-d][b-d]均为#
  3. C[a+n+1][b+n+1]C[a+n+1][b+n+1]C[a+n+1][bn1]C[a+n+1][b-n-1]C[an1][b+n+1]C[a-n-1][b+n+1]C[an1][bn1]C[a-n-1][b-n-1]中至少有一个为.

例如,在下图所示的网格中,存在以((2, 2))为中心、大小为(1)的叉形,以及以((3, 7))为中心、大小为(2)的叉形:

网格中存在若干个叉形,且除了组成叉形的单元格外,其他单元格均无#。此外,组成不同叉形的单元格之间不会共用顶点(下图中的两种网格均为不同叉形单元格共用顶点的示例,这类网格不会作为输入给出。例如左侧网格中,(3, 3)与(4, 4)共用顶点,不符合输入条件):

N=min(H,W)N = \min(H, W)(即H和W中的较小值),SnS_n表示大小为nn的叉形的数量。请计算并输出S1,S2,,SNS_1, S_2, \dots, S_N

输入格式

  • 第1行输入两个整数H(行数)和W(列数);
  • 接下来H行,每行输入一个长度为W的字符串,依次表示网格第1行到第H行的字符。

输出要求

S1,S2,,SNS_1, S_2, \dots, S_N以空格分隔的形式输出N=min(H,W)N = \min(H, W)

5 9
#.#.#...#
.#...#.#.
#.#...#..
.....#.#.
....#...#
1 1 0 0 0
3 3
...
...
...
0 0 0
3 16
#.#.....#.#..#.#
.#.......#....#.
#.#.....#.#..#.#
3 0 0
15 20
#.#..#.............#
.#....#....#.#....#.
#.#....#....#....#..
........#..#.#..#...
#.....#..#.....#....
.#...#....#...#..#.#
..#.#......#.#....#.
...#........#....#.#
..#.#......#.#......
.#...#....#...#.....
#.....#..#.....#....
........#.......#...
#.#....#....#.#..#..
.#....#......#....#.
#.#..#......#.#....#
5 0 1 0 0 0 1 0 0 0 0 0 0 0 0

提示

  • 3H,W1003 \leq H, W \leq 100
  • C[i][j]C[i][j]仅为#.
  • 组成不同叉形的单元格之间不会共用顶点
  • HHWW均为整数