QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: Milmon

Posted at: 2026-03-31 17:14:55

Last updated: 2026-03-31 17:14:59

Back to Problem

题解

考虑对于每个 $i$,计算玩家正好在 $i$ 处时的操作产生的贡献。

设 $f_i$ 表示一个玩家游戏时正好跳到 $i$ 处的概率,$g_i$ 表示一个玩家游戏时第一次跳到 $\geq i$ 的位置是跳到了 $[i + 1, m)$ 中的某个位置的概率。通过前缀和优化,上述两个数组均可以在 $\mathcal{O}(m)$ 的时间复杂度内得到。

下面考虑计算在 $i$ 处操作产生的贡献。设有 $x$ 个玩家都在 $i$ 处,一次操作直接跳到 $\geq m$ 的概率为 $p$。

  • 若 $p = 0$,那么产生 $x$ 的贡献;
  • 若 $p \neq 0$,那么产生的贡献和为 $\sum\limits_{i = 0}^{x - 1} (1 - p)^i = \frac{1 - (1 - p)^x}{p}$。

接下来要对所有 $x$ 求贡献总和:

  • 若 $p = 0$,那么总贡献显然为 $n f_i \cdot (f_i + g_i)^{n - 1}$;
  • 否则,总贡献为 $\sum\limits_{x = 0}^{n} \binom{n}{x} f_i^{x} g_i^{n - x} \cdot \frac{1 - (1 - p)^x}{p}$,将后面的分数拆开并使用二项式定理,可得答案即为 $\frac{1}{p} (f_i + g_i)^n - \frac{1}{p} ((1 - p) f_i + g_i)^n$。

由于需要计算快速幂,所以总时间复杂度为 $\mathcal{O}(n \log n)$。

Comments

No comments yet.