AT_abc189_f [ABC189F] Sugoroku2
题目描述
高桥君正在玩双六游戏。
这个双六游戏有 $N+1$ 个格子,编号从 $0$ 到 $N$。高桥君从 $0$ 号格子出发,目标是到达 $N$ 号格子。
在这个游戏中,有一个等概率出现 $1$ 到 $M$ 的 $M$ 种结果的轮盘。每一回合,高桥君旋转轮盘,并根据结果前进相应的步数。如果因此到达或越过 $N$ 号格子,则游戏结束。
此外,有一些格子是“返回起点”格子,停在这些格子上会被送回 $0$ 号格子。这些格子共有 $K$ 个,分别是 $A_1,\ldots,A_K$ 号格子。
请输出高桥君到达终点前,轮盘旋转的期望次数。如果无法到达终点,请输出 `-1`。
输入格式
输入通过标准输入按以下格式给出。
> $N$ $M$ $K$ $A_1$ $...$ $A_K$
输出格式
请输出高桥君到达终点前轮盘旋转的期望次数。若与标准答案的绝对误差或相对误差不超过 $10^{-3}$,则视为正确答案。如果无法到达终点,请输出 `-1`。
说明/提示
### 限制条件
- 所有输入均为整数。
- $1 \leq N \leq 10^5$
- $1 \leq M \leq 10^5$
- $0 \leq K \leq 10$
- $0 < A_1 < \ldots < A_K < N$
### 样例解释 1
第一次轮盘若转到 $1$,则需要 $2$ 次,若转到 $2$,则 $1$ 次即可到达终点,因此期望次数为 $1.5$。
### 样例解释 2
轮盘转到 $1$ 时会到达 $1$ 号格子,但该格子为“返回起点”,所以会被送回 $0$ 号格子。因此需要不断旋转轮盘直到第一次转到 $2$,此时即可到达终点。第 $i$ 次首次转到 $2$ 的概率为 $\frac{1}{2^i}$,所以期望次数为 $\sum_{i=1}^{\infty} (i \times \frac{1}{2^i}) = 2$。
由 ChatGPT 4.1 翻译