AT_ddcc2019_final_a レース (Race)

题目描述

高桥君建造了一个企鹅赛道。 赛道由 $N$ 个正方形格子从西到东一字排开。 这些格子的状态由字符串 $S$ 表示,从西边起第 $i$ 个格子的状态由 $S$ 的第 $i$ 个字符决定,若为 `-` 则为“雪地”,若为 `>` 则为“冰面”。 此外,起点为最西端格子的西侧边界,终点为最东端格子的东侧边界。 高桥君的企鹅从起点出发,向东前进,目标是到达终点。 企鹅通过一个雪地格子需要 $1$ 秒,通过一个冰面格子需要 $1/(k+2)$ 秒。 其中,$k$ 表示该冰面格子前面连续存在的冰面格子的数量。 例如,如果在雪地格子后面连续有 $2$ 个冰面格子,则第 $1$ 个冰面格子通过需要 $1/2$ 秒,第 $2$ 个冰面格子通过需要 $1/3$ 秒。 在企鹅出发前,高桥君可以将任意一个雪地格子变为冰面格子。 请问企鹅从起点出发到达终点所需的最短时间是多少秒?

输入格式

输入从标准输入按以下格式给出。 > $N$ $S$

输出格式

输出企鹅到达终点所需的最短时间。 只要你的输出与标准输出的相对误差或绝对误差不超过 $10^{-8}$,即可视为正确。

说明/提示

### 限制条件 - $3 \leq N \leq 100\,000$ - $S$ 是由 `-` 和 `>` 组成的长度为 $N$ 的字符串 - $S_1 = S_2 = S_{N-1} = S_N = $ `-` - **在 $S$ 中,`-` 总是与另一个 `-` 相邻出现** ### 样例解释 1 将从西边起第 $4$ 个格子由雪地变为冰面后,赛道变为 `-->>-`。此时,企鹅通过从西边起第 $1, 2, 3, 4, 5$ 个格子的时间分别为 $1, 1, 1/2, 1/3, 1$ 秒,总共 $23/6 = 3.83333333...$ 秒,为最短时间。 ### 样例解释 2 无论将哪个格子由雪地变为冰面,企鹅到达终点都需要 $13/2 = 6.5$ 秒。 ### 样例解释 3 将从西边起第 $2$ 个或第 $6$ 个格子由雪地变为冰面后,企鹅到达终点所需时间为 $407/60 = 6.783333333...$ 秒。 由 ChatGPT 4.1 翻译