日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[cogs1065]绿豆蛙的归宿

發(fā)布時(shí)間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [cogs1065]绿豆蛙的归宿 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1065. [Nescafe19] 綠豆蛙的歸宿

【題目描述】

給出一個(gè)有向無環(huán)的連通圖,起點(diǎn)為1終點(diǎn)為N,每條邊都有一個(gè)長(zhǎng)度。綠豆蛙從起點(diǎn)出發(fā),走向終點(diǎn)。
到達(dá)每一個(gè)頂點(diǎn)時(shí),如果有K條離開該點(diǎn)的道路,綠豆蛙可以選擇任意一條道路離開該點(diǎn),并且走向每條路的概率為 1/K 。
現(xiàn)在綠豆蛙想知道,從起點(diǎn)走到終點(diǎn)的所經(jīng)過的路徑總長(zhǎng)度期望是多少?

【輸入格式】

第一行: 兩個(gè)整數(shù) N M,代表圖中有N個(gè)點(diǎn)、M條邊
第二行到第 1+M 行: 每行3個(gè)整數(shù) a b c,代表從a到b有一條長(zhǎng)度為c的有向邊

【輸出格式】

從起點(diǎn)到終點(diǎn)路徑總長(zhǎng)度的期望值,四舍五入保留兩位小數(shù)。

【輸入樣例】

4 4
1 2 1 1 3 2 2 3 3 3 4 4

【輸出樣例】

?7.00

?

【數(shù)據(jù)范圍】

時(shí)間限制:1 s?? 內(nèi)存限制:128 MB

對(duì)于20%的數(shù)據(jù) ? N<=100

對(duì)于40%的數(shù)據(jù) ? N<=1000
對(duì)于60%的數(shù)據(jù) ? N<=10000
對(duì)于100%的數(shù)據(jù) ?N<=100000,M<=2*N

?

題解:

由于要講課所以回來補(bǔ)一下坑……這題是一道概率的入門題啊……

設(shè)f[i]為從i走到終點(diǎn)的期望步數(shù),顯然f[n]=0;

我們考慮期望的線性性,由某個(gè)點(diǎn)i走到終點(diǎn)的期望步數(shù)f[i]應(yīng)該等于Σ(f[j]+(j->i邊權(quán)/j點(diǎn)出度),j->i有邊)

我們建立反圖遞歸求,最后求出的f[1]即為所求。

代碼見下:

1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 using namespace std; 5 const int N=100000; 6 int n,m,e; 7 queue<int>q; 8 int rudu[N+100],tmp[N+100],chudu[N+100],adj[N+100]; 9 double f[N+100]; 10 struct node{int zhong,next;double val;}s[N*2+100]; 11 inline void add(int qi,int zhong,double val) 12 { 13 s[++e].zhong=zhong;s[e].val=val; 14 s[e].next=adj[qi];adj[qi]=e; 15 } 16 int main() 17 { 18 //freopen("Lex.txt","r",stdin); 19 freopen("ldfrog.in","r",stdin); 20 freopen("ldfrog.out","w",stdout); 21 scanf("%d%d",&n,&m); 22 int a,b;double c; 23 for(int i=1;i<=m;i++) 24 scanf("%d%d%lf",&a,&b,&c),rudu[a]++,chudu[b]++,add(b,a,c); 25 q.push(n); 26 for(int i=1;i<=n;i++)tmp[i]=rudu[i]; 27 while(!q.empty()) 28 { 29 int rt=q.front();q.pop(); 30 for(int i=adj[rt];i;i=s[i].next) 31 { 32 int u=s[i].zhong;tmp[u]--; 33 f[u]+=(f[rt]+s[i].val)/rudu[u]; 34 if(tmp[u]==0)q.push(u); 35 } 36 } 37 printf("%.2lf",f[1]); 38 } COGS1065

?

轉(zhuǎn)載于:https://www.cnblogs.com/LadyLex/p/7171567.html

總結(jié)

以上是生活随笔為你收集整理的[cogs1065]绿豆蛙的归宿的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。