本篇为该题解的补充与说明
处理出来一共有个多少的要摁的开关 (最优的方法是摁多少次)
我们可以先从 \(k\) 入手,从后往前扫,只要遇到 \(1\) 的位置就操作,并更新编号为 \(i\) 的约数的点
-
一个点不会被操作 \(2\) 次以上,因为 \(2\) 次操作相当于没操作
-
操作 \(i\) 不会影响到比ii大的数
-
所以从后往前扫,若遇到 \(1\) 不操作,那么前面的操作也不会改变这个 \(1\) ,所以必须操作
(借鉴自本篇博客)
接下来我们该推随机处理得式子
设 \(f[i]\) 表示从 \(i\) 个需要按的键到 \(i-1\) 个需要按的键的期望操作次数,则我们可以得到以下式子
\[f[i] = \frac{i}{n} + \frac{n-i}{n} \times (f[i] + f[i - 1] + 1) \]\(\frac{i}{n}\) (这里面的 \(i\) 表示剩下有 \(i\) 个正确的键)表示从 \(n\) 个数里面选,选中正确的开关键位的概率.
则 \(\frac{n-i}{n}\) 表示按到错误的灯的概率.所以当我们摁错了一个开关时,已经增加了 \(\frac{n-i}{n} \times 1\) 的期望.
因为我们已经摁错了,所以还要转移回回正确的