QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 256 MB مجموع النقاط: 100

#3149. 领地

الإحصائيات

你居住在一个城市里,这里有许多南北向的道路和东西向的道路,它们交织在一起。相邻两条南北向道路之间的距离为 $1\,\text{km}$,相邻两条东西向道路之间的距离也为 $1\,\text{km}$。

这个城市里有一个市政府。我们将市政府所在的十字路口记作 $(0,0)$。城市中的十字路口可以用两个整数 $i, j$ 表示为 $(i, j)$。也就是说,十字路口 $(i, j)$ 表示从 $(0,0)$ 向东走 $i\,\text{km}$(若 $i < 0$ 则向西走 $-i\,\text{km}$),向北走 $j\,\text{km}$(若 $j < 0$ 则向南走 $-j\,\text{km}$)到达的位置。

市政府养了一只名叫 Joy 的狗。Joy 制定了一个为期 $K$ 天的散步计划。散步计划如下:

  • 在 $K$ 天中的第一天早晨,Joy 位于十字路口 $(0,0)$。Joy 会在十字路口 $(0,0)$ 做标记。除了 $(0,0)$ 之外,Joy 没有在其他任何十字路口做过标记。
  • 在 $K$ 天中的每一天白天,Joy 都会进行散步。一天的散步由 $N$ 个步骤组成。在每个步骤中,Joy 从当前十字路口移动到相邻的十字路口,并在移动目的地做标记。Joy 每天白天如何移动是不变的。
  • 白天的移动结束后,Joy 会在当前所在的十字路口睡觉,直到第二天的早晨。

市政府正在讨论 Joy 在 $K$ 天散步后形成的“领地”。当四个十字路口 $(a,b), (a+1,b), (a+1,b+1), (a,b+1)$ 中的每一个都被 Joy 标记过至少一次时,由这四个十字路口围成的区域就属于 Joy 的领地。

你需要编写一个程序,根据 Joy 的散步计划,计算属于 Joy 领地的区域个数。

这个城市的道路非常长,且南北向和东西向都有足够多的道路,因此 Joy 在散步途中不会到达道路的尽头或城市的边缘。

任务

给定 Joy 的散步计划,编写一个程序计算属于 Joy 领地的区域个数。

输入格式

从标准输入读取以下内容:

  • 第 1 行包含两个整数 $N, K$,以空格分隔。这表示每天的散步由 $N$ 个步骤组成,散步计划持续 $K$ 天。
  • 第 2 行包含一个长度为 $N$ 的字符串 $S$。字符串 $S$ 中从左起第 $p$ 个字符 ($1 \le p \le N$) $C_p$ 为 E, N, W, S 中的任意一个。这些字符的含义如下:
    • 若字符 $C_p$ 为 E,表示在第 $p$ 个步骤中向东侧相邻的十字路口移动。
    • 若字符 $C_p$ 为 N,表示在第 $p$ 个步骤中向北侧相邻的十字路口移动。
    • 若字符 $C_p$ 为 W,表示在第 $p$ 个步骤中向西侧相邻的十字路口移动。
    • 若字符 $C_p$ 为 S,表示在第 $p$ 个步骤中向南侧相邻的十字路口移动。

其中,对于十字路口 $(i, j)$,其东侧、北侧、西侧、南侧的十字路口分别为 $(i+1, j), (i, j+1), (i-1, j), (i, j-1)$。

输出格式

将属于 Joy 领地的区域个数输出到标准输出。

数据范围

所有输入数据满足以下条件:

  • $1 \le N \le 100\,000$
  • $1 \le K \le 1\,000\,000\,000$

子任务

子任务 1 [5 分] 满足以下条件: $N \le 50$ $K = 1$

子任务 2 [10 分] * 满足 $K = 1$

子任务 3 [23 分] * 满足 $N \le 50$

子任务 4 [62 分] * 无额外限制。

样例

样例输入 1

12 1
EENWSEEESWWS

样例输出 1

3

说明

在该样例中,散步在 1 天内完成。第一天 Joy 从市政府出发,按如下路径移动。 黑点表示 Joy 标记过的十字路口,白点表示未标记的十字路口,双圆圈表示市政府所在的十字路口,数字表示每个步骤。

Joy 的移动路径

在样例 1 中,下图中斜线部分所示的 3 个区域属于 Joy 的领地。

样例 1 中 Joy 的领地

样例输入 2

12 2
EENWSEEESWWS

样例输出 2

7

说明

在样例 2 中,散步持续 2 天。每一天的移动路径与样例 1 相同。散步完成后,下图中斜线部分所示的 7 个区域属于 Joy 的领地。

样例 2 中 Joy 的领地

样例输入 3

7 1
ENNWNNE

样例输出 3

0

样例输入 4

16 5
WSESSSWWWEEENNNW

样例输出 4

21

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.