SP2273 FERRY - Ferries

题目描述

数百万年前,巨大的冰川在挪威的群山中刻下了深深的沟壑,海水注入其中形成了峡湾。这种山水相依的景观虽美,却让旅行变得艰难。通常的计划是:先开几公里车,等一个渡轮,乘渡轮渡过峡湾,再继续开车,如此往复直到抵达目的地。很多人会选择最快速度(最大速度限制为80公里/小时)行驶到下一个渡轮,然后等待渡轮出发,以尽早到达目的地。 然而,高速行驶需要比低速行驶更多的燃料,因此这样的策略不仅昂贵,还对环境不利。为此,新一代巡航控制系统应运而生。给定你的行驶路线,这些系统可以搜集相关渡轮的信息,计算到达终点的最早时间,并设计一种避免不必要加速的驾驶方案。系统会计算出你的最佳道路速度,让你恰好赶上渡轮出发的时刻。 现在,你需要编写一个程序,给定一条由若干道路和渡轮段组成的路线,计算完成这条路线所需的最少时间。此外,你的程序还需找到一种驾驶方案,使得整个行程中的最大行驶速度尽可能低。

输入格式

输入文件包含一个或多个测试用例。每个测试用例描述了一条路线,包括若干段,每段可为道路或渡轮。描述以一个正整数 $s$ 开始,表示路线的段数。接下来的 $s$ 行对每一段进行描述。每行以出发地和目的地的名称开头,然后是“road”或“ferry”字样,指明该段是道路还是渡轮。如果是道路,随后给出以公里为单位的长度(正整数)。例如: ``` Dryna Solholmen road 32 ``` 如果是渡轮,则描述中包括更多信息。继“ferry”之后,说明渡轮航行时间(以分钟为单位),接着是渡轮的频率 $f$($f > 0$),即每小时渡轮出发的次数。接下来的 $f$ 个数字按升序给出渡轮的出发时间。例如: ``` Manhiller Fodnes ferry 20 2 15 35 ``` 这意味渡轮从 Manhiller 到 Fodnes 行驶需要 20 分钟,每小时有两次发船(如 0 时15分,0时35分,1时15分,1时35分等)。整个旅行从整点出发。路线的段是连续的,即如果某段从 A 到 B,则下一段从 B 开始。输入中的每条路线最多可在 10 小时内完成。 输入以一个单独的数字 0 结束。

输出格式

对于每个测试用例,输出一行包含三个内容。第一项是测试用例编号。第二项是以 hh:mm:ss 格式表示的最优方案中的总旅行时间。第三项是最优方案中的最大道路速度,保留两位小数。 每个测试用例的输出后应有一个空行。

说明/提示

无 **本翻译由 AI 自动生成**