BZOJ3036 綠豆蛙的歸宿

2022-03-03 17:03:14 字數 785 閱讀 5775

感覺挺簡單的。就是乙個簡單的dag上的期望問題。

暴力的話是把所有的路徑都算出來,長度加一起再除以總路徑數量。然後優化就是利用期望的線性性(可加性),我們把每條邊的期望算出來,然後再相加就可以了。

顯然求期望=概率*邊長。我們可以考慮先把每個點經過的概率算出來,然後再往邊上轉移。因為是dag,所以我們直接上拓撲排序就可以了。

**如下:

#include#include#include#include#include#include#define maxn 200010

using namespace std;

int n,m,t,cnt;

int head[maxn],chu[maxn],id[maxn],w[maxn],ru[maxn];

double ans;

double val[maxn],node[maxn];

struct edgeedge[maxn<<1];

vectorvec[maxn];

inline void add(int from,int to,int dis)

inline void init()

}}inline void solve(int x)

int main()

node[1]=1.0;

init();

solve(1);

for(int i=1;i<=m;i++) ans+=1.0*w[i]*val[i];

printf("%.2lf\n",ans);

}

bzoj3036 綠豆蛙的歸宿

time limit 2 sec memory limit 128 mb submit 319 solved 224 submit status discuss 給出乙個有向無環的連通圖,起點為1終點為n,每條邊都有乙個長度。綠豆蛙從起點出發,走向終點。到達每乙個頂點時,如果有k條離開該點的道路,綠...

BZOJ 3036 綠豆蛙的歸宿

題意 給定dag帶邊權連通圖,保證所有點都能到達終點n,每個點等概率沿邊走,求起點1到終點n的期望長度。n 10 5。演算法 期望dp 題解 f i 表示到終點n的期望長度。f n 0 f i f j e i w k i i j,k i 是i的出度。因為是點x等概率出發,所以一定要從x算,不能倒著來...

bzoj3036 綠豆蛙的歸宿

題目大意 給定 dag 帶邊權連通圖,保證所有點都能到達終點 n 每個點等概率沿邊走,求起點 1 到終點 n 的期望長度。題解 拓撲,然後倒著 dp 就可以了 卡點 無 c code include define maxn 100010 using namespace std int n,m,oud...