P13374 [GCJ 2011 #2] Airport Walkways

题目描述

你现在在机场,站在 $0$ 点。通往登机口的走廊长度为 $X$ 米,你的飞机即将起飞。走廊上有若干条自动步道,每条步道的速度为 $w_i$。当你在步道上行走或奔跑时,你的速度为(你的速度 $+$ $w_i$)。步道不会移动它们的位置,只是让你移动得更快。步道之间不会重叠:在走廊的任意一点,至多只有一条步道,但一条步道可以在另一条步道结束的地方开始。 你的正常步行速度为 $S$。你担心可能赶不上飞机,因此你可以选择奔跑一段时间——你最多可以以速度 $R$ 奔跑 $t$ 秒。你不需要连续奔跑 $t$ 秒:你可以将这 $t$ 秒分成任意多个时间段,甚至可以不用完全部时间。 请问,在你合理安排步行和奔跑的情况下,最短需要多少时间才能到达登机口 $X$ 点?

输入格式

输入的第一行是测试用例数 $T$。接下来有 $T$ 组测试数据。每组测试数据的第一行为五个整数:$X$(走廊长度,单位为米)、$S$(步行速度,单位为米/秒)、$R$(奔跑速度,单位为米/秒)、$t$(最大奔跑时间,单位为秒)、$N$(步道数量)。 接下来的 $N$ 行,每行包含三个整数:$B_i$、$E_i$ 和 $w_i$,分别表示第 $i$ 条步道的起点、终点(距离起点的米数)以及步道的速度(单位为米/秒)。

输出格式

对于每组测试数据,输出一行,格式为 "Case #$x$: $y$",其中 $x$ 是测试编号(从 $1$ 开始),$y$ 是你到达 $X$ 点所需的最短时间(单位为秒)。当且仅当你的答案的相对或绝对误差不超过 $10^{-6}$ 时,才会被判为正确。

说明/提示

**样例解释** 在第一个样例中,最优的做法是立即开始奔跑,并奔跑 1 秒。 **数据范围** - $1 \leq T \leq 40$。 - $1 \leq S < R \leq 100$。 - $1 \leq w_i \leq 100$。 - $0 \leq B_i < E_i \leq X$。 - $E_i \leq B_{i+1}$。 **小数据集(8 分,测试集 1 - 可见)** - $1 \leq t \leq 100$。 - $1 \leq X \leq 100$。 - $1 \leq N \leq 20$。 - 时间限制:3 秒。 **大数据集(10 分,测试集 2 - 隐藏)** - $1 \leq t \leq 10^6$。 - $1 \leq X \leq 10^6$。 - $1 \leq N \leq 1000$。 - 时间限制:6 秒。 由 ChatGPT 4.1 翻译