洛谷 P4316 綠豆蛙的歸宿 題解

2021-10-04 20:12:51 字數 1067 閱讀 4368

題目傳送門

題目大意:給乙個dag,對於任意乙個點,它走每一條出邊的概率相同,問從起點走到終點的期望路程。

反著跑拓撲然後統計一下每個點到終點的期望路程就好了。

比如說現在拓撲到點 x

xx,設期望路程為 f[x

]f[x]

f[x]

,列舉出乙個點 y

yy 能到達 x

xx,那麼 y

yy 到終點的期望路程就要加上邊權+

f[x]

y的出度

\frac

y的出度邊權

+f[x

]​。注意這題最好不要正著拓撲(即從起點開始拓撲),因為難以統計起點到每個點的期望路程,遞推時並不是直接讓 f[y

]f[y]

f[y]

加上 邊權+

f[x]

x的出度

\frac

x的出度邊權

+f[x

]​這麼簡單,需要考慮的是 y

yy 的每條入邊被走的概率,而不是 x

xx 的出邊唄走的概率。(樣例就是個例子了)

而統計去終點的期望就不需要看入邊的概率,只需要考慮出邊的概率即可。

**如下:

#include

#define maxn 100010

int n,m;

struct edge

;edge e[maxn<<1]

;int first[maxn]

,len=0;

void

buildroad

(int x,

int y,

int z)

; first[x]

=len;

}int du[maxn]

,now[maxn]

,zhan[maxn]

,t=0

;double f[maxn]

;int

main()

}printf

("%.2lf"

,f[1])

;}

洛谷P4316 綠豆蛙的歸宿

思路 因為每條邊等概率,那麼就很輕鬆了,我們先跑個拓撲,確定拓撲序之後,從最後乙個點向前更新,初始是f n 0f n 0 f n 0 能到n的點會獲得 w i f n deg u frac deg u w i f n 的期望長度,因為u的度數是deg u deg u deg u 所以有1de g u...

洛谷 P4316綠豆蛙的歸宿

題目描述 記f i 表示經過i號點的概率。那麼點v從點u到達的概率 經過點u的概率 點u的出度。由於v可以由多個點走到,所以f v f u out u 計算f的過程可以在拓撲中完成,同時可以記錄走過這條邊的期望,相加就是答案。include include using namespace std c...

洛谷P4316 綠豆蛙的歸宿

題目描述 有一張 n n leq 10 5 個點的dag,圖上每一條邊都有乙個邊權 w 從1號點開始,一直走到 n 號點,沒到達乙個點,如果該節點有 k 條出邊,可以選擇任意一條邊離開該點,並且走向每條邊的概率為 frac 問到達 點 n 的期望路徑長度是多少?輸入樣例 4 4 1 2 1 1 3 ...