#P4579. [FJOI2018] 邮递员问题

[FJOI2018] 邮递员问题

题目描述

2010\text{2010} 年以来,网购市场发展迅速,快递公司成为促成交易成功的关键环节。小郭是一名顺丰快递员,他的工资主要包括底薪、送货提成、收件提成、其他福利补贴等。小郭每完成一件客户的快递单,一般能拿到运费 10%10\% 的提成。因此小郭完成的快递单越多越快,他的收入就越高。小郭负责城市中 22 个平行街道的所有快递业务。在这 22 个平行街道上有 22 处快递工作站。小郭每次投递的行程都是从一个工作站出发,完成所有快递单的投递后,回到另一个工作站。为了高效地完成投递任务,小郭希望用最短的行程来完成所有快递单的投递任务。也就是说,对于给定的 22 个平行街道的街距和 22 个工作站位置,以及所有投递点的位置,小郭要计算从一个工作站出发,完成所有快递单的投递后,回到另一个工作站的最短行程。街距是指 22 个平行街道的之间的垂直距离。如果设平面坐标系的 xx 轴与街道平行,且 22 个平行街道上的最左端位置的 xx 坐标均为 00,则 22 个平行街道上的任何位置可以用从街道最左端到该位置的直线距离,即该位置的 xx 坐标值来表示。

例如,设 22 个平行街道 A 和 B 的街距是 2222 个工作站 S1S_1 ​​和 S2S_2​​ 的位置分别位于街道 A 的 x=1x=1 和街道 B 的 x=3x=3 处。另外有 22 个投递点 T1T_1T2T_2​ 的位置分别位于街道 A 的 x=3x=3 和街道 B 的 x=1x=1 处,如图所示。小郭的任务就是要从工作站 S1S_1​​ 出发,完成在 T1T_1​​ 和 T2T_2​​ 处的快递单投递后,回到另一个工作站 S2S_2

编程任务:对于给定的 22 个平行街道的街距和 22 个工作站位置,以及所有投递点的位置,计算从一个工作站出发,完成所有快递单的投递后,回到另一个工作站的最短行程。

输入格式

11 行有 22 个正整数 n,mn,m1n,m100001 \le n,m \le 10000,分别表示 22 个平行街道 A 和 B 上的位置数(包括投递点的位置和工作站的位置)。位置编号为 A:1,2,,n1,2,\ldots,n;B:1,2,,m1,2,\ldots,m

22 行有 44 个正整数 a,b,c,da,b,c,d,表示 22 个工作站位置分别为 (a,b)(a,b)(c,d)(c,d)a=0a=0c=0c=0 表示相应的工作站在街道 AAa=1a=1c=1c=1 表示相应的工作站在街道 BBbbdd 分别表示工作站在相应的街道的位置号。例如,若 (a,b)=(0,3)(a,b)=(0,3) 表示第 11 个工作站位于街道 AA 上,其位置位于给出的街道 AAnn 个位置的第 33 个位置。

33 行有 11 个实数 hh,表示 22 个平行街道的街距 (1h10)(1 \le h \le 10)

44 行有 nn 个实数,表示街道 AAnn 个位置的 xx 坐标 (1x<20000)(1 \le x < 20000)

55 行有 mm 个实数,表示街道 BBmm 个位置的 xx 坐标 (1x<20000)(1 \le x < 20000)

输出格式

输出计算出的最短行程,保留 22 位小数。

2 2
0 1 1 2
2
1 3
1 3
6.83

提示

对于 10%10\% 的数据,n,m8n,m\le 8

对于 30%30\% 的数据,n,m100n,m\le 100

对于 50%50\% 的数据,n,m1000n,m\le 1000

对于 100%100\% 的数据,n,m10000n,m\le 10000