QOJ.ac

QOJ

実行時間制限: 5 s メモリ制限: 256 MB 満点: 100

#11989. 棋盘

統計

Ruirui 和 Doc 正在一个有 $n$ 行 $m$ 列的棋盘上玩一个有趣的游戏。行从上到下编号为 $1$ 到 $n$,列从左到右编号为 $1$ 到 $m$。棋盘上有一些破损的格子,棋子无法进入。首先,Doc 给 Ruirui 一个指令序列,每条指令属于以下四种形式之一:

  • Move Up:从格子 $(x, y)$ 移动到格子 $(x - 1, y)$;
  • Move Down:从格子 $(x, y)$ 移动到格子 $(x + 1, y)$;
  • Move Left:从格子 $(x, y)$ 移动到格子 $(x, y - 1)$;
  • Move Right:从格子 $(x, y)$ 移动到格子 $(x, y + 1)$。

然后,Ruirui 将一枚棋子放在棋盘上的某个格子里。Ruirui 会按照 Doc 的指令序列移动棋子。如果棋子在移动后会移出棋盘边界或进入破损的格子,她会忽略该指令,并继续考虑下一条指令,直到最后一条指令。现在,Ruirui 想要找出棋子最终所在的格子。

输入格式

第一行包含一个整数 $T$ ($1 \le T \le 10$),表示测试用例的数量。接下来是 $T$ 个测试用例。

对于每个测试用例,第一行包含 4 个整数 $n, m, o$ 和 $l$ ($1 \le n, m, o, l \le 1000$),分别表示行数、列数、破损格子的数量以及 Doc 的指令序列长度。

接下来的 $o$ 行,每行包含两个整数 $i$ 和 $j$,描述一个破损格子的位置。

最后一行包含 Doc 的指令序列,这是一个长度为 $l$ 的字符串,每个字符为 {"U", "D", "L", "R"} 中的一个,分别表示向上移动、向下移动、向左移动和向右移动。

输出格式

对于每个测试用例,对于每一个未破损的格子 $(i, j)$,假设棋子从 $(i, j)$ 开始,最终停在 $(x(i, j), y(i, j))$,输出所有未破损格子 $(i, j)$ 的 $(i - x(i, j))^2 + (j - y(i, j))^2$ 之和。

样例

输入 1

2
5 5 5 5
2 3
5 1
5 5
4 4
3 5
RRRLR
10 10 10 10
2 6
3 8
7 2
5 3
4 3
3 2
7 9
6 8
9 10
10 6
DLLDRRURLR

输出 1

Case #1: 49
Case #2: 241

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.