原題傳送門
練一練期望
這應該是一道期望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 現在綠豆蛙想知道,從起點走...