#P16519. [Bapc2008]Road

[Bapc2008]Road

题目背景

荷兰乡村的一些道路只有一辆车宽,道路两侧又是运河,车辆无法驶离道路避让。为此,道路上设置了若干加宽的会车点,使相向车辆可以在那里交会。

现在所有车辆都已经到达道路两端并希望尽快通过。对于每一对相向车辆,题目已经指定它们必须在哪个会车点交会。你需要计算在遵守这份会车计划的前提下,所有车辆通过道路所需的最短时间。

题目描述

道路东西走向,长度为 ll 米。共有 pp 个会车点,它们到道路西端的距离严格递增。

ee 辆向东行驶的汽车和 ww 辆向西行驶的汽车:

  • 向东汽车从道路西端进入;
  • 向西汽车从道路东端进入;
  • 同一方向中,编号较小的汽车先进入道路;
  • 所有汽车在行驶时速度恒为 45 km/h45\text{ km/h},也可以原地停车等待;
  • 启动和停车不耗费额外时间;
  • 同向行驶的相邻汽车之间必须始终保持至少 2525 米距离;
  • 汽车长度忽略不计。

对于每一对“第 yy 辆向东汽车”和“第 xx 辆向西汽车”,给定一个整数 zz,表示它们的交会位置:

  • 1zp1\le z\le p:二者在第 zz 个会车点交会;
  • z=0z=0:二者在道路西端交会,这意味着向东汽车 yy 必须在向西汽车 xx 离开道路之后才能进入;
  • z=p+1z=p+1:二者在道路东端交会,含义与上面类似。

相邻两个不同会车点之间的距离至少为 3030 米。

所有汽车都可以选择适当的进入时刻与停车时间。请在满足给定会车计划、同向车辆顺序和安全距离的条件下,使从第一辆车进入道路到最后一辆车离开道路的时间尽可能短,并输出这个最短时间。

输入格式

第一行包含一个整数 TT,表示测试用例数量。

对于每个测试用例:

  1. 第一行包含两个整数 l,pl,p
    • 0<l300000<l\le 30000,表示道路长度;
    • p>0p>0,表示会车点数量。
  2. 第二行包含 pp 个严格递增的正整数,表示各会车点到道路西端的距离。
  3. 第三行包含两个整数 e,we,w0<e,w10000<e,w\le 1000),分别表示向东和向西汽车数量。
  4. 接下来 ee 行,每行包含 ww 个整数。第 yy 行第 xx 个数 zy,xz_{y,x} 表示第 yy 辆向东汽车与第 xx 辆向西汽车的交会位置,且 0zy,xp+10\le z_{y,x}\le p+1

一行中的整数由一个或多个空格分隔。

输出格式

对于每个测试用例,输出一行一个整数,表示所有汽车通过道路所需的最短时间,单位为秒,并四舍五入到最接近的整数。

样例输入

2
150 1
50
1 1
1
100 1
30
3 2
2 2
1 2
0 2

样例输出

16
32