无人机数据采集节能飞行规划 | ||
---|---|---|
Time Limit: 10000 MS | Memory Limit: 262144 KB |
Description
背景:在一条笔直的河流边部署了许多地面传感器,来监测河流及岸边环境。无人机需要沿着笔直的河岸飞行,并采集这些传感器的数据。 现在,需要你帮助确定无人机在这过程中的飞行速度(可以随时改变),使得在确保所有传感器的数据都能被完全采集的同时,最小化无人机的飞行能耗。 无人机在固定的高度飞行,且总飞行距离固定,为D米。将这条直线飞行路径用数轴表示,无人机从起点x=0飞向终点x=D。 沿途共部署了n个传感器,从1到n分别编号,它们需要将自身的数据上传至无人机。 传感器的传输距离并非无限远,无人机只有在某个传感器的传输范围以内才可以采集它的数据。 第 i 个传感器的传输范围是从x=Li到x=Ri的区间,也可记为(Li, Ri),0<=Li<Ri<=D。 多个传感器的传输范围可能存在重叠或包含的情况。 例如,图1中两个传输范围存在部分重叠,图2中传感器2的传输范围被传感器1的传输范围所包含。 尽管传输范围可能有重叠,但无人机在同一时刻只能采集一个传感器的数据。不过,你可以决定采集的顺序。 例如图1,当无人机在(L2,R1)之间飞行时,可以先采集传感器1的数据,再采集传感器2的数据;也可以先采集传感器2的数据,再采集传感器1的数据。但无论以何种顺序采集,都不允许超出对应传感器的传输范围。 注意: (1)我们既不允许无人机悬停,也不允许无人机反向飞行。因此,在图1中,在飞出传感器1的传输范围(飞过x=R1)之前,必须完成对传感器1的数据采集。 (2)有的区域可能未被任何一个传感器的传输范围覆盖,但仍需要确定无人机在这段区间的飞行速度。 采集数据需花费一定的时间。无人机采集第 i 个传感器的数据需要花费 ti 秒。 另外,无人机在飞行时会消耗能量。当无人机以速度 v 飞行时,消耗的功率为P(v)。 例如,当无人机以 1 m/s 的速度从x=5飞至x=8(米),消耗的能量为 P(1)*(8-5)/1。 请你设计一个算法,能够输出无人机在从x=0飞到x=D过程中的速度方案,使无人机在能完整收集所有传感器信息的前提下,最小化飞行能耗。假如无人机飞行速度调整可以在瞬时完成并且不消耗额外的能量。
Input
第一行输入一个整数T (T<=10),表示有T组数据。 每组数据第一行为一个整数n (n<=150),表示传感器数量; 第二行为一个实数D,表示终点,注:起点为0; 接下来的n行,每行3个实数,Li, Ri, ti,分别表示第 i 个传感器的传输范围左端点、右端点、所需传输时间。
Output
对于T组数据,每组输出无人机的飞行速度方案。 每个方案包括三行: 第一行一个正整数m>=1,表示无人机在飞行过程中使用了的速度次数; 第二行从小到大依次输出m个实数x_1, x_2,..., x_m,分别表示无人机在x=x_j处改变了速度,其中x_m一定等于D,如果无人机全程匀速,则可以设置x_1=D,m=1。 第三行m个实数 v_1, ..., v_m,表示无人机在(0,x_1)区间以速度v_1飞行,在(x_{j-1},x_j)区间以速度v_j飞行。
Sample Input
2 2 15 0 10 50 5 15 40 2 10 0 10 5 3 8 10
Sample Output
1 15 0.1666667 3 3 8 10 1 0.5 1 说明: 第一组数据(参考图1): 无人机全程以0.1666667 m/s的速度匀速飞行。 在(0,8.3333333)采集传感器1的数据,在(8.3333333, 15)采集传感器2的数据。 能耗 E = P(0.1666667) * 15 / 0.1666667 第二组数据(参考图2): 无人机在(0,3)以1 m/s的速度飞行,在(3,8)以0.5 m/s的速度飞行,在(8,10)以1 m/s的速度飞行。 在(0,3)和(8,10)采集传感器1的数据,在(3,8)采集传感器2的数据。 能耗 E = P(1)*(3-0)/1 + P(0.5)*(8-3)/0.5 + P(1)*(10-8)/1