QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 256 MB مجموع النقاط: 100

#12996. 下坡

الإحصائيات

一名登山者站在一座高度为 $H$ 米的陡峭山顶上。他有一根绳子,想要下到山脚。山上共有 $n$ 个岩架,第 $i$ 个岩架距离山脚 $a_i$ 米。登山者可以站在任何一个岩架上或山顶,但不能站在山上的其他任何地方。

登山者利用绳子从一个岩架移动到另一个岩架。他可以将绳子系在岩架上,下降,然后站在岩架上时将绳子切断。在这种情况下,被切断的那部分绳子会永远悬挂在那里,因为下到下方后无法将其解开,但剩余的绳子仍留在登山者手中,他可以继续使用。

在悬挂于绳子上时,登山者可以在他握住的地方将绳子切断,并在末端打一个环,然后将剩余的绳子穿过这个环(这也可以在站在岩架上时完成)。之后,他可以利用对折后的双股绳子下降,并在下降后将其拉回。请参考“说明”部分以获得更好的理解。

求登山者从山顶到达山脚所需的最短绳子长度。你可以假设绳子无限细,且切割或打结造成的材料损失可忽略不计(为零)。

输入格式

第一行包含两个空格分隔的整数 $n$ 和 $H$ ($0 \le n \le 10^6, 0 \le H \le 10^9$),分别表示岩架的数量和山的高度(单位:米)。

下一行包含 $n$ 个空格分隔的整数 $a_1, \dots, a_n$,表示岩架的高度 ($H > a_1 > \dots > a_n > 0$)。

输出格式

输出一个实数,表示所需的绳子长度,要求绝对误差或相对误差不超过 $10^{-6}$。

样例

输入 1

1 100
50

输出 1

75

输入 2

2 3
2 1

输出 2

1.75

说明

考虑第一组样例中下山的几种可能方式。

第一种方式是直接使用 100 米的绳子从山顶下到山脚。第二种方式是在山顶打一个环,将双股绳子穿过环,下到岩架处,然后回收绳子。重复此过程从岩架下到地面,我们得到了另一种使用 100 米绳子下山的方法。

如果我们结合这两种方法,可以做得更好,仅用 75 米的绳子就能下山。让我们从山顶悬挂 25 米的单股绳子,在那里打一个环,然后用双股绳子下到岩架。这样我们损失了最初的 25 米,但节省了我们用于双股下降的 50 米。这 50 米正好足够以单股绳子的方式下到地面。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.