1. 程式人生 > >CERC2017 Gambling Guide,最短路變形,期望dp

CERC2017 Gambling Guide,最短路變形,期望dp

題目連結

題面連結

題意

給定一個無向圖,你需要從1點出發到達n點,你在每一點的時候,使用1個單位的代價,隨機得到相鄰點的票,但是你可以選擇留在原地,也可以選擇使用掉這張票,問到達n點的最小代價的方案的期望是多少。

題解

我們先假定在最優方案下從每個點x出發,到達n點的代價的期望為ex,那麼顯然,我們可以列出方程ex=min(ex,ey)degx+1,其中yx節點相連。初值dpn=0

借鑑GXZlegend的一句話,遇見“初始值只有一個點的dp值確定,其他點的dp值依賴於已經計算出來的點的

dp值”這種型別的題,往往考慮使用最短路的方式轉移。

觀察方程,如果我們按照計算出來的ex從小到大的方式遍歷的話,那麼先計算出來的ex一定不會再被後計算出來的值更新,滿足跟最短路一樣的性質。

我們一開始假定所有的ex|x!=n=inf,並且en=0,每個點的min(ex,ey)都取ex

那麼我們模擬一下這個轉移過程,當前從堆裡取出的點是u,相鄰的點有v,我們發現v是第一次被更新,因為ev=inf,滿足ev>eu,那麼v就要被更新,即根據方程

ev=(degv1)ev+eudegv+1,那麼ev=eu+degv
如果接下來某次取出的點是p,相鄰的點還有v,並且ev>ep,那麼ev就要被二次更新了,也就是ev=(degv2)ev+eu+epdegv+1,那麼