QOJ.ac

QOJ

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

#15732. UFO

統計

Snakeland 的安全部门想要摧毁敌对的外星飞船。安全部门已经击伤了飞船并迫使其着陆。飞船由单位大小的立方体舱室建成。第一层总是由 $N \times M$ 个舱室组成。左图显示了一个大小为 $N = 4, M = 8$ 的飞船示例,右图显示了该飞船的俯视图,其中标明了重叠(堆叠)的舱室数量。

舱室由超强金属制成,因此需要使用激光来摧毁飞船。激光装置部署在飞船的四个侧面,它们定期向飞船的不同舱室发射垂直于飞船侧面的光束。每道光束会摧毁其路径上的前 $R$ 个舱室。如果其他舱室位于被摧毁舱室的上方,这些舱室会向下掉落。

在 $K$ 次射击后,决定对飞船进行空袭。选择一个大小为 $P \times P$ 的区域,该区域包含最多数量的剩余舱室,以将它们全部摧毁,这是很有意义的。

编写一个程序,计算通过对大小为 $P \times P$ 的区域进行空袭所能摧毁的剩余舱室的最大数量。

输入格式

第一行包含 5 个整数 $N, M$($1 \le N \times M \le 1\,000\,000$),$R$($0 < R \le 10$),$K$($0 < K \le 300\,000$),$P$($0 < P \le \min(N, M, 10)$)。

接下来的 $N$ 行,每行包含 $M$ 个整数。第 $i$ 行第 $j$ 列的整数表示飞船对应部分(如右图所示)的舱室数量。每个整数都在 $1 \dots 10^6$ 范围内。

接下来的 $K$ 行描述激光射击。每行包含一个字符和 2 个整数。

字符定义了被射击的飞船侧面:W(西)、E(东)、S(南)、N(北)。

如果是西(W)或东(E),第一个整数定义行号;如果是北(N)或南(S),第一个整数定义列号。第二个整数表示被射击的水平层数(高度)。

行和列的编号与输入中相同,层数从 1 开始编号。每个整数都在 $1 \dots 10^6$ 范围内。

输出格式

你需要输出在 $K$ 次激光射击后,包含在某个大小为 $P \times P$ 的区域内的剩余舱室的最大数量。

样例

输入样例 1

4 8 2 6 2
1 1 1 1 1 1 1 1
1 2 3 1 1 1 3 1
1 2 1 1 3 1 1 1
1 1 1 1 1 1 1 2
N 2 2
W 2 2
W 2 3
E 2 1
S 4 1
S 7 1

输出样例 1

6

说明

在第二张图片中,你可以看到第一张图片中的飞船在样例输入中描述的射击后的状态,以及包含最多剩余舱室的 $2 \times 2$ 区域之一。

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.