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}
\]
前缀和都是好维护的。

浙公网安备 33010602011771号