P11937

设白格期望步数为 \(E\),白格个数为 \(B\),第 \(i\) 个白格期望步数为 \(e_i\),那么

\[E=\frac{\sum_{i=1}^B e_i}{B} \]

当我们被随机甩到一个白格时,有两种方法继续:

  • 移动到当前最近的白格,然后回去,设该移动距离为 \(s_i\),有
    • 若有相邻白格,直接过去即可,\(s_i=1\)
    • 若无相邻白格,走到旁边的黑格再走回来,\(s_i=2\)
  • 不经过任何白格直接到达终点,设到达终点移动距离为 \(S_i\)

那么对于任意当前到达的白格,到达终点期望步数对应到上面两种便是 \(E+s_i\) 和 \(S_i\),于是

\[e_i=\min(E+s_i,S_i)=\min(E,S_i-s_i)+s_i \]

带回去有

\[E=\frac{\sum_{i=1}^n \min(E,S_i-s_i)+s_i}{B} \]

包含 \(\min\) 的话不太好处理,考虑分成 \(\min(E,S_i-s_i)=E\) 和 \(\min(E,S_i-s_i)=S_i-s_i\),然而 \(E\) 在遍历 \(i \in [1,n]\) 的时候始终为定值,从而我们考虑将白点按 \(S_i-s_i\) 从小到大排序,找到分界点 \(p\),使得

  • \(\forall\, i\in [1,p],\ S_i-s_i\le E\)
  • \(\forall\, i\in (p,n],\ S_i-s_i>E\)

上式可变形为

\[E=\frac{\sum_{i=1}^p (S_i-s_i)+(B-p+1)E+\sum_{i=1}^B s_i}{B} \]

把 \(E\) 移到一边有

\[\frac{p-1}{B} \cdot E=\frac{\sum_{i=1}^p (S_i-s_i)+\sum_{i=1}^B s_i}{B} \]

处理分母有

\[E=\frac{\sum_{i=1}^p (S_i-s_i)+\sum_{i=1}^B s_i}{p-1} \]

前缀和都是好维护的。

posted @ 2026-08-28 08:41  constexpr_int  阅读(11)  评论(0)    收藏  举报