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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu 4305 概率dp

發(fā)布時間:2024/4/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu 4305 概率dp 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 /* 2 題目大意:有n個房間由n-1個隧道連接起來,從1號房間開始, 3 每個節(jié)點i都有三種可能: 4 1.被殺死,回到節(jié)點1,概率為ki; 5 2.找到出口,離開迷宮,概率ei; 6 3.與它相連的有m個房間,到任意相連房間的概率(1-ki-ei)/m; 7 求走出迷宮要走房間個數的期望。 8 E[i]表示在節(jié)點i處的期望值,E[1]即為答案,從后往前推。 9 E[1]=k1*E[1]+sigma(E[j])*(1-k1-e1)/childsize[i]+(1-k1-e1) 10 非葉子節(jié)點: 11 E[i]=ki*E[1]+(E[father[i]]+sigma(E[j])*(1-ki-ei)/(childsize[i]+1)+(1-ki-ei) 12 葉子節(jié)點: 13 E[i]=ki*E[1]+E[father[i]]*(1-ki-ei)+(1-ki-ei) 14 一般形式: 15 E[i]=Ai*E[1]+Bi*E[father[i]]*(1-ki-ei)+Ci; 16 E[j]=Aj*E[1]+Bj*E[father[j]]*(1-kj-ej)+Cj 17 把兒子節(jié)點代入 18 E[i]=(Ai+(1-ki-ei)/m*sigma(Aj))*E[1]+Bi*E[father[i]]+E[i]*(1-ki-ei)/m*sigma(B[j])+(1-ki-ei)/m*sigma(Cj)+(1-ki-ei) 19 把E[i]化簡,從下遞推到上,可求出E[1]=A1*E[1]+B1*0+C1。 20 */ 21 #pragma warning (disable : 4786) 22 #include <iostream> 23 #include <cstdio> 24 #include <cstring> 25 #include <cmath> 26 #include <vector> 27 using namespace std; 28 29 const double eps=1e-10; 30 const int maxn=10005; 31 double E[maxn],A[maxn],B[maxn],C[maxn]; 32 double k[maxn],e[maxn]; 33 vector<int> f[maxn]; 34 35 bool dfs(int v,int pre) 36 { 37 A[v]=k[v];B[v]=(1-k[v]-e[v])/f[v].size(); 38 C[v]=1-k[v]-e[v]; 39 double temp=0; 40 for(int i=0;i<f[v].size();i++) 41 { 42 int u=f[v][i]; 43 if(u==pre) continue; 44 if(!dfs(u,v)) return false; 45 A[v]+=B[v]*A[u]; 46 C[v]+=B[v]*C[u]; 47 temp+=B[v]*B[u] ; 48 } 49 if(fabs(temp-1)<eps) 50 return false; 51 A[v]/=(1-temp); 52 B[v]/=(1-temp); 53 C[v]/=(1-temp); 54 return true; 55 } 56 int main() 57 { 58 int t,n,i,a,b,icase=0; 59 scanf("%d",&t); 60 while(t--) 61 { 62 scanf("%d",&n); 63 for(i=1;i<=n;i++) f[i].clear(); 64 for(i=1;i<n;i++) 65 { 66 scanf("%d%d",&a,&b); 67 f[a].push_back(b); 68 f[b].push_back(a); 69 } 70 for(i=1;i<=n;i++) 71 { 72 scanf("%lf%lf",&k[i],&e[i]); 73 k[i]/=100;e[i]/=100; 74 } 75 printf("Case %d: ",++icase); 76 if(dfs(1,-1) && fabs(1-A[1])>eps) 77 printf("%.6lf\n",C[1]/(1-A[1])); 78 else printf("impossible\n"); 79 } 80 return 0; 81 }

?

轉載于:https://www.cnblogs.com/xiong-/p/4137982.html

總結

以上是生活随笔為你收集整理的hdu 4305 概率dp的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。