列表

详情


NC53238. 三明治

描述

JOI君去参加了IOI联♂谊会,会场有一张桌子,桌上有个三明治被摆放成R行C列。每个三明治都被沿主对角线或者次对角线分割成两个小三明治。
一个小三明治仅当以下两种情况都满足时才不能被吃掉:
与该小三明治在同一个三明治中的另一个三明治还没被吃掉;与该小三明治两条直角边相邻的另外两个小三明治中有一个没有被吃掉。现在JOI君想问你,他吃掉每一个三明治时最少要吃掉多少个小三明治?
  1. B_j
  2. C_jD_j

输入描述

第一行有两个整数R和C,表示三明治桌子有R行C列。
之后的R行,每行C个字母,其中字母N表示沿主对角线切割,Z表示沿次对角线切割。
C_j,D_j

输出描述

输出包括R行,每行C个数字,第i行j列表示吃完第i行j列的三明治时最少吃了几个小三明治,如果吃不到,输出-1。

示例1

输入:

2 3
NZN
ZZN

输出:

10 8 2
8 6 4

说明:

大概吃的顺序是这样的:
(1,3)\rightarrow(2,3)\rightarrow(2,2)\rightarrow(1,2)\rightarrow(1,1)
或者:
(1,3)\rightarrow(2,3)\rightarrow(2,2)\rightarrow(2,1)\rightarrow(1,1)

示例2

输入:

5 5
NZZZN
NNNZN
NNZNN
NZNNN
NZZZN

输出:

10 12 14 16 2
8 -1 -1 -1 4
6 -1 -1 -1 6
4 -1 -1 -1 8
2 16 14 12 10

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

上一题