#P16519. [Bapc2008]Road
[Bapc2008]Road
题目背景
荷兰乡村的一些道路只有一辆车宽,道路两侧又是运河,车辆无法驶离道路避让。为此,道路上设置了若干加宽的会车点,使相向车辆可以在那里交会。
现在所有车辆都已经到达道路两端并希望尽快通过。对于每一对相向车辆,题目已经指定它们必须在哪个会车点交会。你需要计算在遵守这份会车计划的前提下,所有车辆通过道路所需的最短时间。
题目描述
道路东西走向,长度为 米。共有 个会车点,它们到道路西端的距离严格递增。
有 辆向东行驶的汽车和 辆向西行驶的汽车:
- 向东汽车从道路西端进入;
- 向西汽车从道路东端进入;
- 同一方向中,编号较小的汽车先进入道路;
- 所有汽车在行驶时速度恒为 ,也可以原地停车等待;
- 启动和停车不耗费额外时间;
- 同向行驶的相邻汽车之间必须始终保持至少 米距离;
- 汽车长度忽略不计。
对于每一对“第 辆向东汽车”和“第 辆向西汽车”,给定一个整数 ,表示它们的交会位置:
- :二者在第 个会车点交会;
- :二者在道路西端交会,这意味着向东汽车 必须在向西汽车 离开道路之后才能进入;
- :二者在道路东端交会,含义与上面类似。
相邻两个不同会车点之间的距离至少为 米。
所有汽车都可以选择适当的进入时刻与停车时间。请在满足给定会车计划、同向车辆顺序和安全距离的条件下,使从第一辆车进入道路到最后一辆车离开道路的时间尽可能短,并输出这个最短时间。
输入格式
第一行包含一个整数 ,表示测试用例数量。
对于每个测试用例:
- 第一行包含两个整数 :
- ,表示道路长度;
- ,表示会车点数量。
- 第二行包含 个严格递增的正整数,表示各会车点到道路西端的距离。
- 第三行包含两个整数 (),分别表示向东和向西汽车数量。
- 接下来 行,每行包含 个整数。第 行第 个数 表示第 辆向东汽车与第 辆向西汽车的交会位置,且 。
一行中的整数由一个或多个空格分隔。
输出格式
对于每个测试用例,输出一行一个整数,表示所有汽车通过道路所需的最短时间,单位为秒,并四舍五入到最接近的整数。
样例输入
2
150 1
50
1 1
1
100 1
30
3 2
2 2
1 2
0 2
样例输出
16
32