contest2583-c-solution
Contest2583 C Solution
魔法题!!11
首先最优方案肯定是按 \(a_i\) 从大到小地抽。因为大的扭蛋只能在这些大的机子里抽到,抽再多的小机子也没用。
现在我们从最大的扭蛋 \(m\) 开始抽,一路往下,考虑扭蛋 \(i\):
-
如果在抽 \(i+1\sim m\) 的扭蛋时已经抽到了扭蛋 \(i\),我们就不需要再特意去抽 \(i\) 了。
-
反之,我们要假设 \(b_i\) 表示 \(a_i\) 中大于等于 \(i\) 的最小的数,我们就要不停地抽 \(b_i\) 直到抽到了 \(i\)。
很显然在 \(b_i\) 中抽到 \(i\) 的期望次数就是 \(b_i\) 次。
现在综合考虑上面的情况,由期望的线性性,假如情况 2 的发生概率是 \(p_i\),那么答案就是
\[\sum p_ib_i+(1-p_i)0=\sum p_ib_i
\]
现在的问题是怎么求 \(p_i\),假如我们只考虑 \(i\sim m\) 这 \(m-i+1\) 个扭蛋:
定义一次扭蛋为 有效的扭蛋 当这次抽到了 \(i\sim m\) 中没出过的扭蛋。
我们考虑如果发生了 \(m-i\) 次有效扭蛋,那么此时 \(i\sim m\) 中还有一个扭蛋没有被抽到。你发现这颗扭蛋是 \(i\) 的概率刚好就对应 \(p_i\)!所以 \(p_i=\frac1{m-i+1}\)。
所以最后的答案就是 \(\displaystyle\sum_{i=1}^m\frac{b_i}{m-i+1}\),直接计算即可。不过建议 \(O(n)\) 预处理 \(b_i\) 和逆元,不然可能会被卡常。

浙公网安备 33010602011771号