[CF712E]Memory and Casinos

題目

傳送門 to luogu

思路

由於正解講的蠻多了,所以這裏寫幾個騙分做法。

普通想法

f(i)(lir)f(i)(l\le i\le r) 表示,從 ll 出發,始終位於 [l,r][l,r] 中,走到 ii 的概率。初始化

f(l)=1+fail(i+1)f(l+1)\color{green}{f(l)=1+fail(i+1)\cdot f(l+1)}

爲什麼這裏的初始化不是一?同樣的,我們分類討論,如果是直接出現,則爲 11 ;或者是從上面下來。

另一個角度,不將 ff 理解爲概率,理解爲

wayP(way)\sum_{way}P(way)

其中 wayway 是一種合法的移動方式,可以是一來就出現於 ll 處,或者走着走着回去了。

對於 i(l,r)i\in(l,r) ,明顯只能從上方或下方到來,故

f(i)=win(i1)f(i1)+fail(i+1)f(i+1)f(i)=win(i-1)\cdot f(i-1)+fail(i+1)\cdot f(i+1)

試着去解,

fail(i+1)f(i+1)=f(i)win(i1)f(i1)fail(i+1)\cdot f(i+1)=f(i)-win(i-1)\cdot f(i-1)

fail(i+2)f(i+2)=f(i+1)win(i)f(i)fail(i+2)\cdot f(i+2)=f(i+1)-win(i)\cdot f(i)

f(i)=aif(i+1)+bif(i)=a_i\cdot f(i+1)+b_i

fail(i+2)f(i+2)=f(i+1)win(i)[aif(i+1)+bi]fail(i+2)\cdot f(i+2)=f(i+1)-win(i)\cdot[a_i\cdot f(i+1)+b_i]

  [1win(i)ai]f(i+1)=fail(i+2)f(i+2)+win(i)bi\Leftrightarrow\;[1-win(i)\cdot a_i]f(i+1)=fail(i+2)\cdot f(i+2)+win(i)\cdot b_i

顯然 ai+1,bi+1a_{i+1},b_{i+1} 可知了,即

ai+1=fail(i+2)1win(i)aia_{i+1}=\frac{fail(i+2)}{1-win(i)\cdot a_i}

bi+1=win(i)bi1win(i)aib_{i+1}=\frac{win(i)\cdot b_i}{1-win(i)\cdot a_i}

fail(r+1)=0fail(r+1)=0 ,顯然可以推廣到 i=ri=r 的情況,於是解出

f(r)=arf(r+1)+br=brf(r)=a_r\cdot f(r+1)+b_r=b_r

於是答案就出來鳥。複雜度 O(nq)\mathcal O(nq) ,可以過 44pts\tt44pts 。話說 brb_r 的計算沒用到 fail(r+1)fail(r+1) ,甚至可以不更改。

簡單想法

就是這道題中的 dp\tt dp 寫法給了我啓示,直接定義 f(i)f(i) 爲,一直在 [l,r+1][l,r+1] 中移動,從 ii 走到 i+1i+1 的概率。轉移就很簡單了,一種是走到 i1i-1 又走回來,一種是直接上去。故

f(i)=fail(i)f(i1)f(i)+win(i)f(i)=fail(i)\cdot f(i-1)\cdot f(i)+win(i)

這種方程就蠻好解了,直接

f(i)=win(i)1fail(i)f(i1)f(i)=\frac{win(i)}{1-fail(i)\cdot f(i-1)}

邊界 f(l1)=0f(l-1)=0 ,不可能從 l1l-1 出發而始終在 [l,r+1][l,r+1] 中。

可是答案比較難看,會是

ans=i=lrf(i)ans=\prod_{i=l}^{r}f(i)

複雜度還是 O(nq)\mathcal O(nq) 的,沒有改進,不過好想的多,也不會打錯。然鵝我錯誤的判斷了難度,選擇剛正解,結果爆零了。

正解

一個區間 [l,r][l,r] 無非就兩種,從左邊進去,和從右邊進去。

所以我們分別用 ffgg 來存儲。從哪邊出去?無所謂,反正和爲一。

然後用線段樹求解。f/g(l,r)f/g(l,r) 都要求一直停在 [l1,r+1][l-1,r+1] 內,然後枚舉過中線的狀態。

比如,從左近、從右出,可能經過了中線 2k+12k+1 次,而每兩次的概率是 f(mid+1,r,LEFT)×g(l,mid,RIGHT)f(mid+1,r,LEFT)\times g(l,mid,RIGHT) ,然後就可以無窮級數直接求出來了。

話說我還以爲是動態dp\sout{\tt dp}那種用線段樹維護矩陣呢,糟透了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章