題面
挺簡單的概率期望dp
設\(f[i]\)為\(i\)到\(n\)的期望路徑的長度
答案就是\(f[1]\)
\(f[x]=(\dfrac)*∑(f[y]+dis)\)
\(d\)是度數,\(y\)是\(x\)的兒子,\(dis\)就是距離
這個式子比較顯然
但是這個是從後往前推的
需要反著建圖然後再通過拓撲排序dp
**如下:
#includeusing namespace std;
const int maxn=100010;
int n,m,head[maxn<<1],tot,d[maxn],in[maxn];
double f[maxn];
struct nodee[maxn<<2];
inline void add(int fr,int to,int di)
inline void tops()
}}int main()
tops();
printf("%.2lf\n",f[1]);
return 0;
}
Luogu P4316 綠豆蛙的歸宿
poetize3 給出乙個有向無環圖,起點為1終點為n,每條邊都有乙個長度,並且從起點出發能夠到達所有的點,所有的點也都能夠到達終點。綠豆蛙從起點出發,走向終點。到達每乙個頂點時,如果有k條離開該點的道路,綠豆蛙可以選擇任意一條道路離開該點,並且走向每條路的概率為 1 k 現在綠豆蛙想知道,從起點走...
洛谷 4316 綠豆蛙的歸宿
有向圖,等概率選擇路徑,問期望路徑長概率dp,f i 表示i節點的期望路徑長 因為dp無後效性,所以反向建圖,來一遍toposort就好了沒有反向建圖 include include define maxn 1000005 define double long double using namesp...
P4316 綠豆蛙的歸宿
poetize3 給出乙個有向無環圖,起點為1終點為n,每條邊都有乙個長度,並且從起點出發能夠到達所有的點,所有的點也都能夠到達終點。綠豆蛙從起點出發,走向終點。到達每乙個頂點時,如果有k條離開該點的道路,綠豆蛙可以選擇任意一條道路離開該點,並且走向每條路的概率為 1 k 現在綠豆蛙想知道,從起點走...