這裏spa
咱們枚舉最後剩下的球的種類,那麼其餘球能夠看作沒用了。
設選定的球有\(a_i\)個,球的總數爲\(s=\sum_{i=1}^n a_i\)。
如今問題變爲:在一個長度爲\(s\)的數軸上,初始在\(a_i\),問在不到達\(0\)的前提下到達\(s\)的指望步數。
設\(p_i\)表示在\(i\)點,向前/後移動一步的機率,有:\(p_i = \frac{i(s-i)}{s(s-1)}\)。
能夠列出一個比較顯然的式子:
\[f_i = (1-2p_i) f_i + p_i f_{i-1} + p_i f_{i+1} + step_i\]
注意\(step_i = \frac{i}{s}\),爲何?
感性理解一下。
想象你有一張很大的圖,有一些節點是終止節點。
如今你要從當前節點向某個後繼節點走一步,要算到達任意一個終止節點的指望步數。
因爲咱們如今選定了一個終止節點。
那麼假設走到了\(0\)號點,就至關於走到了去往另外一個終止節點的路徑。
不妨把這"1"步拆分紅若干份,這若干份的和爲\(1\),分開計算。
因爲走到\(0\)就會走到另外一條路徑上去,因此每一份不妨設爲不走到其它路徑上的機率。
因此\(step_i\)爲從\(i\)點出發,不走到\(0\)的條件下走到\(s\)的機率。
這是一個經典問題了,很容易獲得\(step_i = \frac{i}{s}\)。
樹上高消確定是能夠的,然而須要求逆複雜度爲\(O((\sum a)logn)\)沒法經過此題。
因此咱們須要進一步深刻。
帶入\(step_i = \frac{i}{s}\),稍微變換後有:
\[f_i - f_{i+1} = (f_{i-1}-f_i) +\frac{s-1}{s-i}\]
因此能夠獲得:\(f_{i}-f_{i+1} = (f_1-f_2) + \sum_{j=2}^{i}\frac{s-1}{s-j}\)
那麼有:
\[f_1 = \sum_{i=1}^{s-1} (f_i - f_{i+1}) = (s-1)(f_1-f_2)+\sum_{i=2}^{s-1}\sum_{j=2}^{i} \frac{s-1}{s-j}\]
而\(\sum_{i=2}^{s-1}\sum_{j=2}^{i} \frac{s-1}{s-j} = \sum_{i=2}^{s-1} (s-i) \frac{s-1}{s-i} =(s-2)(s-1)\)。
因此\(f_1 = (s-1)(f_1-f_2) + (s-2)(s-1)\)。
而因爲\(f_0\)屬於另外一條路徑,即不存在,故\(f_1 = (1-2p)f_1 +pf_2 + \frac{1}{s}\)。
化簡有:\(2f_1 = f_2 + 1\),因此\(f_1 - f_2 = 1 - f_1\)。
因此有:
\[f_1 = (s-1)(1-f_1) +(s-2)(s-1)\]
解得\(f_1 = \frac{(s-1)^2}{s}\),即\(f_1-f_2 = 1-\frac{(s-1)^2}{s}\)
而咱們知道\(f_{i}-f_{i+1}\)與\(f_{i-1}-f_i\)之間的關係,所順次推出全部\(f_i\)便可。
答案\(ans = \sum_{i=1}^n f_{a_i}\),複雜度\(O(max(a)logn)\)。get