洛谷P4316 綠豆蛙的歸宿

2022-09-09 05:24:13 字數 1017 閱讀 7350

\(【題目描述】\)

有一張\(n(n\leq 10^5)\)個點的dag,圖上每一條邊都有乙個邊權\(w\),從1號點開始,一直走到\(n\)號點,沒到達乙個點,如果該節點有\(k\)條出邊,可以選擇任意一條邊離開該點,並且走向每條邊的概率為\(\frac\),問到達​點\(n\)的期望路徑長度是多少?

\(【輸入樣例】\)

4 4 

1 2 1

1 3 2

2 3 3

3 4 4

\(【輸出樣例】\)

7.00
\(【考點】\)

期望dp

\(【做法】\)

期望dp一般都是由前往後遞推,這道題目可以反向建邊之後進行dp。設\(f[i]\)表示從第\(i\)個點走到第\(n\)個點的期望路徑長度,則根據期望公式\(e(x)=\sum x_i \cdot p_i\),有如下轉移方程:

\(f[u]= \frac \cdot \sum\limits_ f[v]+w[u][v]\)

其中\(degree[u]\)表示點\(u\)的入度,\(son_u\)表示所有可以到達\(u\)的點。

\(【**】\)

#include#include#includeusing namespace std;

const int n=2e5+50;

struct egdea[n];

int head[n],cnt;

int in[n],dgree[n];

double f[n];

int n,m;

queueque;

void add(int u,int v,long long w)

void topo_sort()//拓撲排序+dp

}}signed main()

topo_sort();

printf("%.2lf\n",f[1]);

return 0;

}

洛谷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 綠豆蛙的歸宿

poetize3 給出乙個有向無環圖,起點為1終點為n,每條邊都有乙個長度,並且從起點出發能夠到達所有的點,所有的點也都能夠到達終點。綠豆蛙從起點出發,走向終點。到達每乙個頂點時,如果有k條離開該點的道路,綠豆蛙可以選擇任意一條道路離開該點,並且走向每條路的概率為 1 k 現在綠豆蛙想知道,從起點走...