跳转至

随机分析:直接期望递推

配套讲解的期望递推解法;Codex(GPT-6)整理为滚动存储,明确同时更新的取值顺序。程序:alternative-direct-expectation.cpp。首选方案见主解。

方法与证明

模数记为 \(M=998244353\) .

初始化各位置期望 \(x_j=a_j\) ,计算不变的平均值 \(\mu=n^{-1}\sum a_j\) .第 \(i\) 轮先保存旧值 \(c=x_i\) ,对每个 \(j\ne i\) 更新

\[ x_j\gets(n-1)n^{-1}x_j+n^{-1}c\pmod M \]

最后令 \(x_i=\mu\) .独立均匀抽样使位置 \(j\) 有 \(1/n\) 的概率收到位置 \(i\) 的旧值,其余情况不变;位置 \(i\) 则收到均匀选择的位置的值。因此公式准确描述一轮期望。对轮次归纳,最终数组就是所求结果。

必须先保存 \(c\) ,不能把已经更新的 \(x_i\) 用于同一轮的其他位置。不需要保留历史轮次,因为这一轮只依赖每个位置自己的旧值和共同的 \(c\) .

复杂度与适用范围

总时间 \(O(n^2+\log M)\) ,空间 \(O(n)\) .\(n=1\) 也可以直接按公式运行,无须求 \((n-1)^{-1}\) .该实现最直接地对应单轮公式;仿射主解通过合并共同更新减少为线性轮次处理。

这是完整范围的正确备用方案。具体参考时限下的结果见主解实测,更高时间阶不意味着当前规模必定超时。