#ATagc028f. [AGC028F] Reachable Cells

[AGC028F] Reachable Cells

题目描述

有一个由 NNNN 列的格子组成的棋盘。从上往下第 ii 行,从左往右第 jj 列的格子记作 (i,j)(i,j)。每个格子要么是空的,要么放有障碍物。所有空格子上都写有一个数字。当 Ai,j=A_{i,j}= 1, 2, ... 9 时,表示格子 (i,j)(i,j) 是空的,且上面写着数字 Ai,jA_{i,j}。当 Ai,j=A_{i,j}= # 时,表示格子 (i,j)(i,j) 上有障碍物。

若满足以下所有条件,则称可以从格子 XX 到达格子 YY

  • 格子 XXYY 不同。
  • 格子 XXYY 都是空格子。
  • XX 出发,每次只能向右或向下移动到相邻的空格子,最终可以到达 YY

请你对于所有可以从 XXYY 的格子对 (X,Y)(X,Y),计算 XX 上的数字与 YY 上的数字的乘积,并求这些乘积的总和。

输入格式

输入从标准输入读入,格式如下:

NN
A1,1A1,2A1,NA_{1,1}A_{1,2}\ldots A_{1,N}
A2,1A2,2A2,NA_{2,1}A_{2,2}\ldots A_{2,N}
\vdots
AN,1AN,2AN,NA_{N,1}A_{N,2}\ldots A_{N,N}

输出格式

请输出所有可以从 XXYY 的格子对 (X,Y)(X,Y)XX 上的数字与 YY 上的数字的乘积之和。

样例 1

输入

2
11
11

输出

5

样例 2

输入

4
1111
11#1
1#11
1111

输出

47

样例 3

输入

10
76##63##3#
8445669721
75#9542133
3#285##445
749632##89
2458##9515
5952578#77
1#3#44196#
4355#99#1#
#298#63587

输出

36065

样例 4

输入

10
4177143673
7#########
5#1716155#
6#4#####5#
2#3#597#6#
6#9#8#3#5#
5#2#899#9#
1#6#####6#
6#5359657#
5#########

输出

6525

说明/提示

数据范围

  • 1N5001 \leq N \leq 500
  • Ai,jA_{i,j} 只会是 1, 2, ... 9, # 这几种字符之一。

样例解释 1

可以从 XXYY 的格子对 (X,Y)(X,Y) 有如下 55 种情况:

  • X=(1,1)X=(1,1), Y=(1,2)Y=(1,2)
  • X=(1,1)X=(1,1), Y=(2,1)Y=(2,1)
  • X=(1,1)X=(1,1), Y=(2,2)Y=(2,2)
  • X=(1,2)X=(1,2), Y=(2,2)Y=(2,2)
  • X=(2,1)X=(2,1), Y=(2,2)Y=(2,2)

对于每一组,XXYY 上的数字乘积都是 11,所以答案是 55

由 ChatGPT 4.1 翻译