QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 512 MB Points totaux : 100

#12961. 超级蚂蚁

Statistiques

这是一个关于蚂蚁的游戏。在这个游戏中,你拥有一个 $N$ 行 $M$ 列的网格。行号从上到下编号为 $1$ 到 $N$,列号从左到右编号为 $1$ 到 $M$。网格中的每个单元格都有无限量的某种糖果,每单位糖果会给玩家提供特定的分数。游戏只有 1 个步骤:放置 1 只超级蚂蚁在网格中的任意单元格,蚂蚁将执行其神奇的工作来决定你的得分。

一旦超级蚂蚁被放置在某个单元格中,它就会执行一种系统性的行为来从存储中收集糖果单位。如果没有剩余时间,蚂蚁会从其所在单元格的存储中获取 1 单位糖果并停止工作。如果有剩余时间,它会开始一种神奇的操作,即蚂蚁克隆操作。超级蚂蚁会根据当前剩余时间开始向所有可能的单元格克隆自己(所有的克隆操作同时开始)。克隆到距离为 $D$ 的单元格需要 $D$ 秒。位于 $(R_1, C_1)$ 的蚂蚁与位置 $(R_2, C_2)$ 的距离为 $\max(|R_1 - R_2|, |C_1 - C_2|)$(其中 $|X|$ 表示 $X$ 的绝对值)。一旦新的超级蚂蚁被克隆出来,它就会利用剩余时间像超级蚂蚁一样行动。

最后,当剩余时间不足以让任何蚂蚁克隆到任何其他单元格时,每只蚂蚁都会从其所在单元格收集一个单位的糖果,你的得分是所有收集到的糖果单位价值的总和。注意,蚂蚁不能克隆到距离超过当前剩余时间的单元格,蚂蚁不能多次克隆到同一个单元格,它不能克隆到自己所在的单元格,并且任何单元格在任何时候都可以包含任意数量的蚂蚁。

那么,蚂蚁可以克隆到哪些位置呢?首先,蚂蚁不能克隆到网格之外的单元格。其次,它只能克隆到其 8 个方向向量上的任意单元格。方向向量意味着同一方向上的所有连续单元格,例如从位置 $(A, B)$ 出发,东向向量将生成 $(A, B + 1), (A, B + 2), (A, B + 3)$ 等等。在下图中,一只剩余时间为 2 秒的超级蚂蚁可以克隆到 16 个位置,其中 8 个距离为 1,8 个距离为 2。

给定网格中每个糖果单位的得分值、你拥有的总允许时间(时间从第一只蚂蚁被放置时开始)以及第一只超级蚂蚁的起始单元格,你能编写一个程序来计算如果你使用该单元格所能获得的得分吗?

输入格式

你的程序将在一个或多个测试用例上进行测试。输入的第一行是一个整数 $T$,表示测试用例的数量($1 \le T \le 100$)。接下来是各个测试用例,每个测试用例的第一行包含 3 个由空格分隔的整数 $N, M, S$($1 \le N, M \le 50$ 且 $0 \le S \le 500$),分别表示网格的行数、列数和剩余时间。接下来的一行包含 2 个由空格分隔的整数 $I, J$($1 \le I \le N$ 且 $1 \le J \le M$),表示第一只蚂蚁起始的行号和列号。随后是 $N$ 行,每行包含 $M$ 个由空格分隔的整数,表示该行每个单元格中糖果单位的价值。网格中的每个整数不小于 0 且不大于 9。

输出格式

对于每个测试用例,打印一行,包含一个整数,表示游戏结束时你将获得的得分。由于结果可能非常大,请输出其对 $1,000,000,007$ ($10^9 + 7$) 取模的结果。

样例

输入 1

2
5 6 1
3 3
0 2 4 6 8 1
1 1 2 3 1 2
1 4 5 6 3 4
2 7 8 9 5 8
3 5 8 0 7 0
5 6 2
3 3
0 2 4 6 8 1
1 1 2 3 1 2
1 4 5 6 3 4
2 7 8 9 5 8
3 5 8 0 7 0

输出 1

45
349

说明

在第一个样例中,第一只蚂蚁将从其单元格收集一个价值为 5 的糖果单位。此外,它将在 8 个方向上克隆出 8 只蚂蚁,它们每只只能从各自的单元格中获得 1 个糖果单位。总得分为 $1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45$。

在第二个样例中,第一只蚂蚁将克隆自己到距离为 2 的 8 个单元格(剩余时间为 0),以及距离为 1 的 8 个单元格(剩余时间为 1,因此后者的每个克隆体将进一步克隆自己)。

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.