概率與期望 P4316 綠豆蛙的歸宿

2021-10-19 21:19:12 字數 1496 閱讀 8511

p4316 綠豆蛙的歸宿

題目中說明本題的圖是乙個有向無環圖,即dag

dagda

g圖。分析題目,我們可以想到這是一道期望dp題目,而針對一張圖進行遞推或者dpdp

dp,首先進行拓撲排序,將圖的結點變成乙個序列,然後再應用遞推或者dpdp

dp等演算法。

我們可以設狀態f[x

]f[x]

f[x]

表示點x

xx到終點n

nn所經過的路徑的期望長度,若從x

xx出發有k

kk條邊,分別到達y

iy_i

yi​,邊長分別為z

iz_i

zi​,則根據數學期望的定義和性質可得:f[x

]=1k

∑i=1

k(f[

yi]+

zi

)f[x]=\frac\sum_^(f[y_i]+z_i)

f[x]=k

1​i=

1∑k​

(f[y

i​]+

zi​)

顯然,終點到其本身的期望值為零,所以:

邊界f [n

]=

0f[n]=0

f[n]=0

目標:f[1

]f[1]

f[1]

首先拓撲排序,然後逆序找到n

nn,開始逆序進行dpdp

dp。

#include

#include

using

namespace std;

inline

intread()

while

(c >=

'0'&& c <=

'9')

return f * x;

}const

int maxn =

200050

;int n,m,cnt,h[maxn]

;int top,num,dg[maxn]

,indgr[maxn]

,sta[maxn]

,ans[maxn]

;double f[maxn]

;//f[x]表示x點到終點n的期望路徑總長

struct node

edg[maxn]

;void

add(

int u,

int v,

int val)

void

tps(

)//拓撲排序,ans儲存答案 }}

voiddp(

)}}int

main()

tps();

dp();

printf

("%.2lf\n"

,f[1])

;return0;

}

對圖進行dpdp

dp等演算法要先使用拓撲排序

合理判斷dpdp

dp的正序、逆序

P4316 綠豆蛙的歸宿

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

P4316 綠豆蛙的歸宿

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

P4316 綠豆蛙的歸宿 數學期望

正題 評測記錄 大意 乙個有限無環圖,綠豆蛙從乙個點走向任何一條出邊的概率都是一樣的,求起點到終點路徑的期望長度。解題思路 有向無環圖,我們考慮在拓撲序上dp,我們可以設乙個點的期望長度是f if i fi 然後我們可以發現,因為走任何一條邊的概率是一樣的,而從任何一條邊走過來的概率是一樣是我們會更...