1. 程式人生 > >12.25模擬賽T2

12.25模擬賽T2

https://www.luogu.org/blog/a23333/post-xing-xuan-mu-ni-sai-path-ji-wang-zui-duan-lu

如果設f[i]表示從i到n的期望

那麼轉移方程比較好列。

但是取min的環形轉移?

反過來想,

如果我們知道了f[x]的大小關係,

其實,可以化簡成

其實就是,我們把一些min變成f[x]然後再消一消。

其實轉移貌似沒有環了?

但是我們不知道大小關係。

一些邊沒有用,度數減少一些。

只有比f[x]小的f[y]會轉移到x,感覺和最短路有關?

實際上,

把f[n]=0放進堆裡,跑一個堆優化dij,每次取出最小點更新相鄰的點的f值。

用分析法或者加權平均數可以證明:f[x]<f'[y]<f[y]

所以,這個轉移是有意義的,並且轉移完成之後,f[y]不可能比f[x]小使得轉移變得不合法

而且,可以證明,一個f值被取出的第一次,就是最終的f值。因為能轉移到的一定都更新了,不會越更新越小導致能再轉移過來。

然後開心dij一下即可。

不放心的話,可以觀察最後的實際轉移情況,所有轉移一定是從比f[x]小的地方轉移而來。