SP12958 VPL0_A - Another Gift Problem
题目描述
Luis 的家人藏起了所有的圣诞礼物,这让他感到十分苦恼。Luis 的家非常富有,他们住在一座拥有很多楼层的摩天大楼中。Luis 准备趁父母外出时,利用电梯偷偷搜寻圣诞礼物的藏匿地点。
Luis 获得了一份大楼地图,并标记了能够找到礼物的地方。大楼的电梯只支持上下移动。你可以假设电梯会随时停在任何楼层并供 Luis 使用,但每次乘坐电梯到达楼层 $A_i$ 都需要花费一个单位的时间,Luis 不可以通过电梯在搜寻过程中离开大楼。
到达某个楼层后,Luis 会从位置 $(0,0)$ 开始寻找礼物,查看完所有房间后,他会返回电梯并继续搜寻。Luis 的目标是找到所有礼物,并且可以忽略没有标记礼物的位置。例如,如果他知道某层没有礼物,可以直接乘坐电梯前往下一地点。以下是关于摩天大楼中 Luis 搜寻的假设:
- Luis 的家住在摩天大楼的第 0 层(位置 $(0,0)$)。
- Luis 只能从每层楼的 $(0,0)$ 位置开始使用电梯。
- 第 0 层没有礼物,因为他的父母特别小心地藏礼物。
- Luis 搜寻时不会通过电梯离开大楼。
- 大楼的每一层结构相同,可以用一个 $N \times N$ 的矩阵来表示。
- 电梯可以上行或下行,但不能同时进行。(假设电梯随时运作)。
- 同楼层内,礼物的坐标是唯一的,不会相互重叠。
- Luis 在同一楼层内只能沿水平或垂直方向以单位时间移动。
- 换乘电梯需要一个单位时间,电梯内移动时间忽略不计。
考虑到楼层数、电梯数及其运行层数、礼物的个数和位置,以及每层楼的面积为 $N \times N$,请计算出 Luis 寻找完所有礼物并回到最后一个礼物所在楼层的 $(0,0)$ 所需的最短时间。
保证每个情况都存在至少一个可行方案。
输入格式
第一行包含一个整数 $T$,表示测试用例数。随后是这 $T$ 个测试用例的具体描述。
每个测试用例以四个整数开始:$M$、$E$、$K$ 和 $N$,分别表示楼层数、电梯数、礼物数和每层楼的大小。
接下来 $E$ 行,每行表示第 $i$ 个电梯上升或下降的楼层数 $E_i$(负数表示下降)。
再接下来 $K$ 行,每行包括三个整数,表示第 $i$ 个礼物所在的楼层 $f$ 及位置 $(r,c)$。
输入必须从标准输入读取。
输出格式
对于每个测试用例,输出字符串 "Scenario #i: ",其中 $i$ 为测试用例的编号(从 1 开始),接着输出 Luis 搜索完所有礼物所需的最短时间(以单位计算)。
输出必须写入标准输出。
说明/提示
- $1 \leq T \leq 5$
- $1 \leq M \leq 10$
- $1 \leq E \leq 3$
- $1 \leq K \leq 2$
- $1 \leq N \leq 1$
例如给定输入:
```
5
5 1 1 1
1
3 0 0
5 3 1 1
1
4
-1
3 0 0
5 1 2 1
1
2 0 0
4 0 0
10 3 2 1
1
8
-2
4 0 0
6 0 0
5 3 3 5
1
2
-1
2 1 3
2 4 1
2 3 4
```
样例输出为:
```
Scenario #1: 3
Scenario #2: 2
Scenario #3: 4
Scenario #4: 3
Scenario #5: 17
```
**例外说明**
在最后一个用例中,
Luis 从第 0 层出发,乘电梯到第 2 层。假设在第二层上的三个礼物的坐标分别为 A=$(1,3)$,B=$(4,1)$,C=$(3,4)$。Luis 可以通过多种路径收集这些礼物:A->B->C、B->C->A、C->A->B、C->B->A、A->C->B 或 B->A->C。然而,最短路径是 B->A->C,接着返回原点 $(0,0)$,总计 16 步,再���上电梯的一个单位时间,总共为 17 单位时间。
**本翻译由 AI 自动生成**