綠豆蛙的歸宿 期望 DFS

2022-09-03 06:36:12 字數 3195 閱讀 8095

若乙個點有

k' role="presentation" style="position: relative">k

k條出邊,則走每條出邊的概率均為1k

' role="presentation" style="position: relative">1k1

k。給出乙個有向無環圖,求從起點走到終點的所經過的路徑總長度期望。 in

put' role="presentation" style="position: relative">inp

utinput

4 4

1 2 1

1 3 2

2 3 3

3 4 4

ou

tput

' role="presentation" style="position: relative">out

puto

utpu

t

7.00
這很明顯是一道數學期望的題目。但是由於之前沒有做過這類的題目,所以做起來還是很吃力。

拿樣例來說

點1' role="presentation" style="position: relative">1

1一開始肯定是有1.00的機率到達的,它有兩條出邊,分別到達點

2' role="presentation" style="position: relative">22和點

3' role="presentation" style="position: relative">3

3,那麼,點

2' role="presentation" style="position: relative">22和點

3' role="presentation" style="position: relative">3

3就各有0.50的機率到達。

那麼,點

2' role="presentation" style="position: relative">2

2又有一條出邊到達點

3' role="presentation" style="position: relative">3

3,那麼點

3' role="presentation" style="position: relative">3

3到達的機率就在原來的基礎上又加上了點

2' role="presentation" style="position: relative">2

2的到達機率,所以點

3' role="presentation" style="position: relative">3

3的到達機率為1.00。

然後點3

' role="presentation" style="position: relative">3

3就只有一條出邊,通向點

4' role="presentation" style="position: relative">4

4,所以點

4' role="presentation" style="position: relative">4

4到達機率就為

每次當我們訪問到乙個點時,就講答案su

m' role="presentation" style="position: relative">sum

sum加上它到達的概率

×' role="presentation" style="position: relative">×

×邊權,即su

m+=s

[x]n

um[x

]×e[

i].d

is' role="presentation">sum

+=s[

x]nu

m[x]

×e[i

].di

ssum

+=s[

x]nu

m[x]

×e[i

].di

s且這個點的期望也要加上s[

x]nu

m[x]

' role="presentation" style="position: relative">s[x

]num

[x]s

[x]n

um[x

]然後繼續向下搜尋,搜到點

n' role="presentation" style="position: relative">n

n時就返回,然後將期望值減去s[

x]nu

m[x]

' role="presentation" style="position: relative">s[x

]num

[x]s

[x]n

um[x

],防止重複計算。

#include 

#include

using

namespace

std;

int n,m,x,y,t;

double z,sum,s[300011],num[300011],head[300011],k;

struct edge //鄰接表

e[500011];

void add(int from,int to,double d) //建邊

void dfs(int x)

}int main()

s[1]=1.00;

dfs(1);

printf("%0.2lf\n",sum);

return

0;}

綠豆蛙的歸宿 期望 DFS

若乙個點有 k role presentation style position relative k k條出邊,則走每條出邊的概率均為1k role presentation style position relative 1k1 k。給出乙個有向無環圖,求從起點走到終點的所經過的路徑總長度期望。...

綠豆蛙的歸宿

綠豆蛙的歸宿 time limit 10000ms memory limit 165536k total submit 3 accepted 1 case time limit 1000ms description 給出乙個有向無環的連通圖,起點為1終點為n,每條邊都有乙個長度。綠豆蛙從起點出發,走...

綠豆蛙的歸宿

兩種方法,正推和逆推 逆推 dp i 表示從 i 到 n 的期望,方程的轉移 對於一條從 x 到 y 邊 dp x sum limits dp y edge i oud x 正推 dp i 表示從 1 到 i 的期望,g i 表示從 1 到 i 的概率,方程的轉移 對於一條從 x 到 y 的邊 dp...