QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 512 MB 總分: 100

#1127. 病毒实验

统计

你知道 Just Odd Inventions Co., Ltd. 吗?这家公司的业务就是做一些“奇怪的发明”。这里我们简称它为 JOI 公司。

JOI 公司开发了一种名为“JOI 病毒”的新病毒。JOI 公司想要通过用 JOI 病毒感染 IOI 岛上的居民来进行一项实验。

IOI 岛呈矩形。岛上有 $R - 1$ 条东西向的平行道路和 $C - 1$ 条南北向的平行道路,它们将岛屿分成了 $RC$ 个区域。每个区域内恰好住着 1 名居民。我们将住在从北往南数第 $i$ 个、从西往东数第 $j$ 个区域的居民($1 \le i \le R, 1 \le j \le C$)称为“居民 $(i, j)$”。

在 IOI 岛上,一天有 $M$ 个时间段。我们将第 $k$ 个时间段称为“时间段 $k$”。风总是从某个方向吹来:北、南、东或西。风向可能会随时间段而改变。如果时间段相同,则无论哪一天,风向都是相同的。

每位居民都有一个“抵抗力”状态。居民 $(i, j)$($1 \le i \le R, 1 \le j \le C$)的抵抗力由一个非负整数 $U_{i, j}$ 表示。

  • 如果 $U_{i, j}$ 等于 0,意味着居民 $(i, j)$ 具有高抵抗力,他/她不会感染 JOI 病毒。
  • 如果 $U_{i, j}$ 是一个正整数,意味着居民 $(i, j)$ 可能会感染 JOI 病毒。如果以下条件持续了 $U_{i, j}$ 个时间段,他/她将在下一个时间段被感染:
    • 住在风吹来方向的相邻区域的居民已经感染了 JOI 病毒。

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

出于实验目的,我们希望至少感染 1 名居民,但我们不想感染太多的居民。起初,我们选择 1 名居民作为首位感染者,并让他/她感染 JOI 病毒。我们不能选择抵抗力为 0 的居民作为首位感染者。

给定每个时间段的风向以及每位居民的抵抗力,编写一个程序,计算 $10^{100}$ 天后感染居民的最小数量,以及当我们选择哪位居民作为首位感染者时能达到该最小数量的人数。

输入格式

从标准输入读取以下数据。

$M \ R \ C$ $D$ $U_{1, 1} \dots U_{1, C}$ $\vdots \quad \quad \vdots$ $U_{R, 1} \dots U_{R, C}$

$D$ 是长度为 $M$ 的字符串,表示 IOI 岛上的风向。$D$ 由 N、S、W 或 E 四种字符组成。第 $k$ 个字符($1 \le k \le M$)表示时间段 $k$ 的风向。注意,这不是风吹向的方向。N 代表北,S 代表南,W 代表西,E 代表东。

输出格式

向标准输出打印两行。

第一行应包含 $10^{100}$ 天后感染居民的最小数量。第二行应包含当我们选择他/她作为首位感染者时,能达到该最小感染人数的居民人数。

数据范围

  • $1 \le M \le 100\,000$
  • $1 \le R \le 800$
  • $1 \le C \le 800$
  • $D$ 是长度为 $M$ 的字符串,仅包含 N、S、W 和 E。
  • $0 \le U_{i, j} \le 100\,000$($1 \le i \le R, 1 \le j \le C$)
  • 至少存在一对 $(i, j)$ 使得 $1 \le U_{i, j}$($1 \le i \le R, 1 \le j \le C$)。

子任务

  1. (14 分) $D$ 仅包含 W 和 E。
  2. (6 分) $1 \le R \le 50, 1 \le C \le 50$。
  3. (80 分) 无附加限制。

样例

样例输入 1

6 3 4
SWNEES
2 1 1 2
1 0 1 3
1 1 2 2

样例输出 1

8
8

样例输入 2

4 4 4
EWWE
1 2 1 2
1 1 1 1
0 0 0 0
2 2 2 4

样例输出 2

3
3

说明

样例 2 满足子任务 1 的限制。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.