QOJ.ac

QOJ

Limite de temps : 8 s Limite de mémoire : 1024 MB Points totaux : 36

#5888. 潮涨潮落

Statistiques

你正在皮划艇穿越一个地下洞穴系统,突然意识到潮水正在上涨,你被困住了!幸运的是,你有一张洞穴系统的地图。在潮水开始退去之前你都无法离开,所以你还得在这里待上一段时间。在此期间,你想确定潮水开始退去后到达出口的最快路径。

洞穴系统是一个 $N \times M$ 的网格。你的地图由两个 $N \times M$ 的数字网格组成:一个指定了每个网格方块的天花板高度,另一个指定了每个网格方块的地板高度。洞穴系统的地板是多孔的,这意味着随着水位下降,水位以上不会残留任何水。

你被困在地图的西北角。当前水位为 $H$ 厘米,一旦水位开始下降,它将以每秒 10 厘米的恒定速度下降,直到降为零。出口位于地图的东南角。它现在被水淹没,但一旦潮水开始退去,它就会变得可以通行。

在任何时候,你都可以向北、南、东或西移动到相邻的方块,并遵循以下约束: 水位、你当前所在方块的地板高度以及相邻方块的地板高度,都必须比相邻方块的天花板高度至少低 50 厘米。注意:这意味着你永远无法进入地板和天花板之间距离小于 50 厘米的方块。 相邻方块的地板高度也必须比你当前所在方块的天花板高度至少低 50 厘米。 * 你永远不能移出地图边界。

注意,你可以带着皮划艇随意上下移动。(经过这段时间的皮划艇运动,你非常强壮!)例如,你可以从地板高度为 10 厘米的方块移动到地板高度为 9000 厘米的相邻方块(前提是满足上述约束)。

这些约束说明如下:

  • 在第一张图中,你不能向右移动,因为水位比相邻方块的天花板高度低不足 50 厘米。
  • 在第二张图中,你不能向右移动,因为你当前所在方块的地板高度比相邻方块的天花板高度低不足 50 厘米。
  • 在第三张图中,你不能向右移动,因为相邻方块的地板高度比相邻方块的天花板高度低不足 50 厘米。你将永远无法从任何方向进入该方块。
  • 在第四张图中,你不能向右移动,因为相邻方块的地板高度比你当前所在方块的天花板高度低不足 50 厘米。

当从一个方块移动到另一个方块时,如果你开始移动时当前方块的水位至少还有 20 厘米,则完成移动需要 1 秒(你可以使用皮划艇)。否则,需要 10 秒(你必须拖着皮划艇)。注意,时间仅取决于你离开的方块中的水位,而不取决于你进入的方块。

在潮水开始退去之前还需要一段时间,因此你可以在水开始下降之前花费任意多的时间移动。重要的是从水开始下降的那一刻起,直到你到达出口所需的时间。你能计算出这个时间吗?

输入格式

  • 第一行包含一个整数 $T$:测试用例的数量。
  • 接下来是 $T$ 个测试用例,每个测试用例的第一行包含整数 $H$、$N$ 和 $M$,分别表示初始水位高度(厘米)和地图尺寸。接下来的 $2N$ 行包含天花板和地板高度,格式如下:
    • 接下来的 $N$ 行,每行包含 $M$ 个空格分隔的整数。第 $i$ 行的第 $j$ 个整数表示网格位置 $(j, i)$ 处的天花板高度 $C_{ij}$,其中 $i$ 坐标增加表示向南, $j$ 坐标增加表示向东。
    • 接下来的 $N$ 行,以相同格式包含 $M$ 个空格分隔的整数,表示地板高度。
  • 在起始位置,天花板与起始水位之间始终至少有 50 厘米的空气,且天花板与地板之间也至少有 50 厘米的距离。
  • 出口位置的天花板与地板之间始终至少有 50 厘米的距离。
  • 始终存在一条出路(毕竟你是进来的!)。

输出格式

对于每个测试用例,输出一行 "Case #x: t",其中 $x$ 是用例编号(从 1 开始),$t$ 是从潮水开始退去时起,你走出洞穴系统所需的时间(秒)。误差在 $10^{-6}$ 以内的绝对或相对误差将被接受。

说明

你有可能在潮水开始下降之前就穿过了整个洞穴系统。在这种情况下,你可以在出口处等待潮水开始下降,因此这种情况下的答案应为零(样例测试用例中的第四个就是这种情况)。

样例

输入 1

4
200 1 2
250 233
180 100
100 3 3
500 500 500
500 500 600
500 140 1000
10 10 10
10 10 490
10 10 10
100 3 3
500 100 500
100 100 500
500 500 500
10 10 10
10 10 10
10 10 10
100 2 2
1000 1000
1000 1000
100 900
900 100

输出 1

Case #1: 11.7
Case #2: 3.0
Case #3: 18.0
Case #4: 0.0

说明 1

在第一个样例测试用例中,东侧方块的水位与天花板之间最初只有 33 厘米,因此在潮水开始下降后,你必须等待 1.7 秒才能进入它。一旦可以通行,你就可以开始进入——但此时西侧方块的水位已经很低(仅比地板高 3 厘米),因此你必须拖着皮划艇走接下来的 10 秒才能到达出口。

第二个样例中的初始情况较好——相邻方块有足够的净空高度,因此你可以在潮水开始下降前移动到例如 $(1, 1)$ 的位置。到达那里后,你必须等待潮水开始下降,并等待水位降至 90 厘米(这需要一秒钟)。然后你可以划皮划艇向南再向东离开(总共三秒)。注意,你不能穿过 $(2, 1)$ 处的洞穴,即使那里的天花板足够高,因为该洞穴的地板与你可以尝试进入的任何洞穴($(1, 1)$ 和 $(2, 0)$)的天花板之间的空间太小——每种情况下只有 10 厘米。

第三个样例与第一个有些相似——你必须在起始位置等待,直到潮水降至 50 厘米。之后你可以划皮划艇前往出口——但在三次移动(花费三秒)后,水位降至 20 厘米,仅比地板高 10 厘米,这意味着第四次移动将是拖行而不是划行。

在第四个样例中,你非常幸运!你可以在潮水开始退去之前立即前往出口,并在那里等待。

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.