atcoder#ABC300C. [ABC300C] Cross

[ABC300C] Cross

题目描述

H H マス横 W W マスのグリッドがあります。グリッドの上から i i 行目、左から j j 列目のマスを (i, j) (i,\ j) と呼びます。
グリッドの各マスには #. のいずれかの文字が書かれています。(i, j) (i,\ j) に書かれている文字を C[i][j] C[i][j] とします。また、整数 i, j i,\ j 1  i  H 1\ \leq\ i\ \leq\ H 1  j  W 1\ \leq\ j\ \leq\ W の少なくとも一方を満たさない場合、 C[i][j] C[i][j] . と定義します。

正整数 a, b, n a,\ b,\ n が以下の条件を全て満たす時、(a,b) (a,b) および (a+d,b+d),(a+d,bd),(ad,b+d),(ad,bd) (a+d,b+d),(a+d,b-d),(a-d,b+d),(a-d,b-d) (1  d  n) (1\ \leq\ d\ \leq\ n) 4n + 1 4n\ +\ 1 マスを (a,b) (a,b) を中心とするサイズ n n のバツ印 と呼びます。

  • C[a][b] C[a][b] # である。
  • 1  d  n 1\ \leq\ d\ \leq\ n を満たす整数 d d について、 C[a+d][b+d],C[a+d][bd],C[ad][b+d],C[ad][bd] C[a+d][b+d],C[a+d][b-d],C[a-d][b+d],C[a-d][b-d] はいずれも # である。
  • $ C[a+n+1][b+n+1],C[a+n+1][b-n-1],C[a-n-1][b+n+1],C[a-n-1][b-n-1] $ のうち少なくとも 1 つは . である。

例えば次の図で示された例では、(2, 2) (2,\ 2) を中心とするサイズ 1 1 のバツ印と (3, 7) (3,\ 7) を中心とするサイズ 2 2 のバツ印がグリッド上にあります。

image

グリッドにはいくつかのバツ印があります。バツ印を構成するマス以外に # は書かれていません。
また、異なるバツ印を構成するマス同士は頂点を共有しません。以下の 2 つのグリッドは異なるバツ印を構成するマス同士が頂点を共有している例で、このようなグリッドの状態は入力として与えられません。 例えば左のグリッドでは (3, 3) (3,\ 3) (4, 4) (4,\ 4) が頂点を共有しているのが条件に反しています。

image2

N = min(H, W) N\ =\ \min(H,\ W) とします。また、サイズ n n のバツ印の個数を Sn S_n とします。S1, S2, , SN S_1,\ S_2,\ \dots,\ S_N を計算してください。

输入格式

入力は以下の形式で標準入力から与えられる。

H H W W C[1][1]C[1][2] C[1][W] C[1][1]C[1][2]\dots\ C[1][W] C[2][1]C[2][2] C[2][W] C[2][1]C[2][2]\dots\ C[2][W] \vdots C[H][1]C[H][2] C[H][W] C[H][1]C[H][2]\dots\ C[H][W]

输出格式

S1, S2, , SN S_1,\ S_2,\ \dots,\ S_N を空白区切りで出力せよ。

题目大意

给定一个 H×WH \times W 的矩阵(只有 #. 这两种字符,第 ii 行第 jj 列的元素记作 Ci,jC_{i,j}),求其中由字符 # 组成的、大小为 ii 的十字架个数(记作 SiS_i)。
S1...min(H,W)S_{1...\min(H,W)} 依次输出。

对大小为 xx 的十字架的定义:
如果数对 (i,j)(i,j) 满足以下条件,则称由 Ci,j,Ci1,j1,Ci2,j2,...Cix,jx,C_{i,j},C_{i-1,j-1},C_{i-2,j-2},...C_{i-x,j-x},
Ci1,j+1,Ci2,j+2,...Cix,j+x,C_{i-1,j+1},C_{i-2,j+2},...C_{i-x,j+x},
Ci+1,j1,Ci+2,j2,...Ci+x,jx,C_{i+1,j-1},C_{i+2,j-2},...C_{i+x,j-x},
Ci+1,j+1,Ci+2,j+2,...Ci+x,j+x,C_{i+1,j+1},C_{i+2,j+2},...C_{i+x,j+x},
4x+14x+1 个点组成的图形为大小为 xx 的十字架(不同十字架之间不共享顶点)。

  • Ci,jC_{i,j} 是字符 #
  • 对于整数 dd1dx 1 \leq d \leq x ),
    Ci+d,j+d,Ci+d,jd,Cid,j+d,Cid,jdC_{i+d,j+d},C_{i+d,j-d},C_{i-d,j+d},C_{i-d,j-d} 都是字符 #
  • $C_{i+x+1,j+x+1},C_{i+x+1,j-x-1},C_{i-x-1,j+x+1},C_{i-x-1,j-x-1}$ 至少有一个是 .

数据范围:3H,W1003 \leq H,W \leq 100

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

提示

制約

  • 3  H, W  100 3\ \leq\ H,\ W\ \leq\ 100
  • C[i][j] C[i][j] # または .
  • 異なるバツ印を構成するマス同士は頂点を共有しない
  • H, W H,\ W は整数

Sample Explanation 1

問題文に書かれた説明の通り、(2, 2) (2,\ 2) を中心とするサイズ 1 1 のバツ印と (3, 7) (3,\ 7) を中心とするサイズ 2 2 のバツ印が書かれています。

Sample Explanation 2

バツ印が 1 個も書かれていない場合もあります。