#P8424. [JOI Open 2022] 跷跷板(Seesaw)
[JOI Open 2022] 跷跷板(Seesaw)
题目背景
译自 JOI Open 2022 T1. シーソー / Seesaw。
题目描述
一根长度为 的直杆从左到右水平放置。你可以忽略这根杆的重量。共有 个砝码挂在这根杆上,每个砝码的质量为一单位。这 个砝码的位置两两不同。第 ()个砝码的位置为 。即,第 个砝码到直杆最左端的距离为 。
最开始,我们有一个宽度为 的箱子。我们可以把这根杆子放在箱子上,支撑起杆从 到 ()的部分(包括两端),即,从杆上位置为 到杆上位置为 的区间。这里需要满足 。之后我们不可以改变 和 的值。
接下来,我们去掉挂在杆上最左端或最右端的砝码。我们需要重复这个操作 次。在这个过程中,包括初始状态和最终状态,挂在杆上的所有砝码重心都需要保持在 到 之间(包括两端)。如果杆上挂有 个砝码,位置分别为 ,那么重心位置为 。
给定 和这 个砝码的位置 ,写一个程序计算箱子的最小可能宽度 。
输入格式
第一行,一个正整数 。
第二行, 个非负整数 。
输出格式
输出箱子的最小可能宽度 。只要你的输出与标准答案之间的绝对误差或相对误差小于等于 ,你的程序就会被判为正确。
3
1 2 4
0.8333333333
6
1 2 5 6 8 9
1.166666667
提示
【样例解释 #1】
可让箱子的宽度为 。我们令 。进行如下操作:
- 最初,重心位置为 。
- 第一次操作,我们去掉最右端的砝码(位置为 的砝码)。重心位置变为 。
- 第二次操作,我们去掉最左端的砝码(位置为 的砝码)。重心位置变为 。
在这个过程中,重心始终保持在 到 范围中。
因为箱子的宽度不会小于 ,因此输出 的小数形式。
这组样例满足所有子任务的限制。
【样例解释 #2】
这组样例满足所有子任务的限制。
【数据范围】
本题采用捆绑测试。
- 子任务 1(1 分):。
- 子任务 2(33 分):。
- 子任务 3(33 分):。
- 子任务 4(33 分):无特殊限制。
对于所有数据,满足 ,。