題解 LuoGu4316 綠豆蛙的歸宿

2021-09-25 02:56:41 字數 1121 閱讀 1281

原題傳送門

練一練期望

這應該是一道期望dp入門題

首先發現圖可以用拓撲處理出來,不用dfs的原因是怕常數大

然後做期望dp

以前沒練過期望,今天終於懂了

期望=概率*值

而概率是沒有單位的,所以期望與那個實際的值的單位是一樣的

d p[

u]

dp[u]

dp[u

]表示u

−>

nu->n

u−>

n的期望長度

因為從1走到n,考慮從n倒推

轉移方程:dp[

v]+=

(dp[

u]+d

is(u

,v))

/deg

[v

]dp[v]+=(dp[u]+dis(u,v))/deg[v]

dp[v]+

=(dp

[u]+

dis(

u,v)

)/de

g[v]

(反向存圖後,v是u的兒子,deg表示度,根據題意來的)

邊界:dp[

n]=0

dp[n]=0

dp[n]=

0 邊dp邊拓撲好了

code:

#include

#define maxn 100010

using

namespace std;

struct edgeedge[maxn <<1]

;int n, m, num, head[maxn]

, in[maxn]

, deg[maxn]

;double dp[maxn]

;inline

intread()

void

addedge

(int x,

int y,

int z)

void

dfs()}

}int

main()

dfs();

printf

("%.2f\n"

, dp[1]

);return0;

}

洛谷 4316 綠豆蛙的歸宿

有向圖,等概率選擇路徑,問期望路徑長概率dp,f i 表示i節點的期望路徑長 因為dp無後效性,所以反向建圖,來一遍toposort就好了沒有反向建圖 include include define maxn 1000005 define double long double using namesp...

Luogu P4316 綠豆蛙的歸宿

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

P4316 綠豆蛙的歸宿

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