luogu#P11394. [JOI Open 2019] ウイルス実験

[JOI Open 2019] ウイルス実験

题目描述

译自 JOI Open 2019 T3 「ウイルス実験」

JOI 公司研究了新型病毒 JOI virus。JOI 公司希望通过用该病毒影响在 IOI 岛的动物做实验。

IOI 岛呈矩形。有 R1R-1 条从西向东的平行道路,和 C1C-1 条从北向南的平行道路。她们将岛分割成 RCRC 个部分。每部分只有一只动物。我们称居住在北部第 ii,西部第 jj 部分的动物为 动物(i,j)1iR1\le i\le R1jC1\le j\le C)。

在 IOI 岛上,一天有 MM 个时间段。我们管第 kk 个叫 时间段k。风总是从某方向吹来:北方,南方,东方和西方。基于时间段,风向可能改变。如果时间段相同,风向总是不变,这和在哪一天无关。

每只动物有一个状态 抵抗力。动物 (i,j)(i,j) 的抵抗力表示为一个非负整数 Ui,jU_{i,j}

  • 如果 Ui,j=0U_{i,j}=0,说明动物 (i,j)(i,j) 有很高的抵抗力,使得它不被 JOI virus 感染。

  • 如果 Ui,jU_{i,j} 是一个正整数,说明动物 (i,j)(i,j) 可能被感染。如果下面条件连续成立了 Ui,jU_{i,j} 时间段,则他/她会从下一个时间段开始被感染。

    -- 从风向处相邻的动物已经被传染。

    注意最后一个时间段和下一天的第一个时间段是连续的。

为了实验,我们希望至少感染 11 只动物,但是我们不希望感染过多的动物。在开始,我们选择一只作为第一个被感染的。我们不能选择 Ui,j=0U_{i,j}=0 的动物 (i,j)(i,j) 作为第一个被感染的个体。

给定每个时间段的风向和每只动物的抵抗力。编写程序计算经过了 1010010^{100} 天后最少被感染了个体数,和达成此目标刚开始能选择的个体有几种。

输入格式

11 行三个整数 M,R,CM,R,C

22 行一个整数 DD

33+R13\sim3+R-1 行,每行 CC 个整数。第 i3+1i-3+1 行第 jj 列的数表示 Ui,jU_{i,j}

DD 是长 MM 的字符串表示风向。D 包含 44 种字符:N\texttt N, S\texttt S, W\texttt W, E\texttt E。分别表示北南西东。第 kk 个字符(1kM1\le k\le M)表示第 kk 个时间段的风向。

输出格式

11 行一个数表示最少被感染个体数。

22 行一个数表示使得被感染的个体最少,初始时有几种选法。

6 3 4
SWNEES
2 1 1 2
1 0 1 3
1 1 2 2
8
8
4 4 4
EWWE
1 2 1 2
1 1 1 1
0 0 0 0
2 2 2 4
3
3

提示

样例解释:

让我们考虑选择动物 (3,1)(3,1) 作为初始被感染个体的情况。

对于动物 (2,1)(2,1),在第 11 天的时间段 11,刮南风,且南边相邻动物已经被感染,所以他/她会从第 11 天的时间段 22 被感染。

对于动物 (3,2)(3,2),在第 11 天的时间段 22,刮西风,且西边相邻动物已经被感染,所以他/她会从第 11 天的时间段 33 被感染。

对于动物 (1,1)(1,1),在第 11 天的时间段 66,刮南风,且南边相邻动物已经被感染,且在第 22 天的时间段 11,刮南风,且南边相邻动物已经被感染,所以他/她会从第 22 天的时间段 22 被感染。

对于动物 (1,2)(1,2),在第 22 天的时间段 22,刮西风,且西边相邻动物已经被感染,所以他/她会从第 22 天的时间段 33 被感染。

对于动物 (1,3)(1,3),在第 33 天的时间段 22,刮西风,且西边相邻动物已经被感染,所以他/她会从第 33 天的时间段 33 被感染。

对于动物 (2,3)(2,3),在第 33 天的时间段 33,刮北风,且北边相邻动物已经被感染,所以他/她会从第 33 天的时间段 44 被感染。

对于动物 (3,3)(3,3),在第 44 天的时间段 22,刮西风,且西边相邻动物已经被感染,且在第 44 天的时间段 33,刮北风,且北边相邻动物已经被感染。所以他/她会从第 44 天的时间段 44 被感染。

没有更多动物会被感染。所以当选择 动物 (3,1)(3,1) 作为初始被感染者时,经过 1010010^{100} 天,88 只动物会被感染。

不论选哪只动物作为初始被感染者,我们都无法使得 1010010^{100} 天后被感染的动物数量小于 88,所以输出的第一行是 88。如果我们选择动物 (1,1)(1,1)(1,2)(1,2)(1,3)(1,3)(2,1)(2,1)(2,3)(2,3)(3,1)(3,1)(3,2)(3,2)(3,3)(3,3) 作为初始被感染者,在 1010010^{100} 天后被感染的个数都是 88。所以第二行应当输出 88

这个样例满足 子任务1 的约束条件。

数据范围:

1M1051\le M\le 10^51R8001\le R\le 8001C8001\le C\le 800

DD 是一个长度为 MM 的字符串,只包含 N\texttt N, S\texttt S, W\texttt W, E\texttt E

0Ui,j1050\le U_{i,j}\le 10^51iR1\le i\le R1jC1\le j\le C)。

至少有一对 (i,j)(i,j) 满足 1Ui,j1\le U_{i,j}1iR1\le i\le R1jC1\le j\le C)。

子任务:

  1. (14 分)DD 只包含 W\texttt WE\texttt E
  2. (6 分)1W501\le W\le 501C501\le C\le 50
  3. (80 分)无额外约束。