首页 > 试题广场 >

路径规划

[编程题]路径规划
  • 热度指数:39 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
路径规划对于自动驾驶来说是非常重要的一环,它决定了自动驾驶的车辆如何在道路上行驶。现在给出一个城市的地图,请规划出最快从起点到达终点的路线。
地图中的路都平行于X轴或Y轴,所有的路是双向通行的。路与路的交叉点有交通灯限制通行,所有的交通灯都是统一周期控制的。
交通灯共有三种不同的状态。第一种是只能右转,维持T1秒;第二种是可以直行左转和右转,维持T2秒;第三种是只能直行和右转,维持T3秒。
三种状态按顺序交替循环,即[0, T1), [T1 + T2 + T3, 2T1 + T2 + T3), [2T1 + 2T2 + 2T3, 3T1 + 2T2 + 2T3)时只能右转,[T1, T1 + T2), [2T1 + T2 + T3, 2T1 + 2T2 + T3), [3T1 + 2T2 + 2T3, 3T1 + 3T2 + 2T3)时可以直行左转和右转,[T1 + T2, T1 + T2 + T3), [2T1 + 2T2 + T3, 2T1 + 2T2 + 2T3), [3T1 + 3T2 + 2T3, 3T1 + 3T2 + 3T3)时可以直行和右转,如此类推。
路的中间和路口都无法掉头。假设车的速度为1单位长度/s,在起点处车可以自己选择启动的方向,给出起点和终点的坐标,问从起点开到终点最少需要的时间。

输入描述:
第一行输入道路的条数N。

然后N行,每行4个整数X1 Y1 X2 Y2,表示每条道路两个端点的坐标。输入保证每条道路平行于X轴或Y轴,每条路的长度都大于0,,道路之间不会有长度大于0的重合。

然后一行4个整数SX SY TX TY,表示起点和终点的坐标。保证起点和终点位于道路上。

最后一行3个整数T0 T1 T2,表示交通灯三种状态的持续时间。


输出描述:
输出到达终点的最少时间。数据保证可以从起点走到终点。
示例1

输入

2
0 2 4 2
2 0 2 4
1 2 2 1
1 1 1

输出

2

说明

只要直接往东走1,右转之后往南走1就可以到达终点。
示例2

输入

4
0 0 0 2
0 1 1 1
1 0 1 2
1 2 2 2
0 0 2 2
1 1 1

输出

6

说明

先往北走1,再右转往东走1,需要等2秒才能左转,之后再往北走1和右转往东走1就可以到达终点,总共需要时间6秒。

备注:
60%的数据,,所有坐标
100%的数据,,所有坐标

这道题你会答吗?花几分钟告诉大家答案吧!