1 /*
 2 题目大意:有n个房间由n-1个隧道连接起来,从1号房间开始,
 3 每个节点i都有三种可能:
 4 1.被杀死,回到节点1,概率为ki;
 5 2.找到出口,离开迷宫,概率ei;
 6 3.与它相连的有m个房间,到任意相连房间的概率(1-ki-ei)/m;
 7 求走出迷宫要走房间个数的期望。
 8 E[i]表示在节点i处的期望值,E[1]即为答案,从后往前推。
 9 E[1]=k1*E[1]+sigma(E[j])*(1-k1-e1)/childsize[i]+(1-k1-e1)
10 非叶子节点:
11 E[i]=ki*E[1]+(E[father[i]]+sigma(E[j])*(1-ki-ei)/(childsize[i]+1)+(1-ki-ei)
12 叶子节点:
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 把儿子节点代入
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相关推荐

  1. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

  2. HDU - 6558/概率dp(从后往前推导)

    VJ地址 中文题意: 有一个苦逼程序员小A,他有一个女朋友B,最近看上了一个游戏,他想买这个游戏,可是小A是一个怕老婆的人,每个 月的工资都需要上交,小A找他女朋友商量了好久,最后B同意他用每个月的工 ...

  3. HDU 4336 概率DP 状压

    用d(S)表示所收集到卡片种类状态为S时还需买多少包小浣熊(这是我YY的)的期望. 则有方程d(S) = 1 + (P(空) + P(有)) * d(S) + P(无) * d(T) 其中P(空)表示 ...

  4. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  5. HDU 1493 QQpet exploratory park(概率DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1493 题意:一排有61个格子标号0-60.其中停在5,12, 22, 29, 33, 38, 42, ...

  6. hdu 3853 LOOPS 概率DP

    简单的概率DP入门题 代码如下: 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 ...

  7. HDU - 4035 Maze(概率dp)

    题目链接:点击查看 题目大意:给出一个 n 个点的树,初始时位于点 1 ,每个点都会给出一个概率 k[ i ] 和一个概率 e[ i ] ,其代表的意义分别是: k[ i ] :在点 i 有 k[ i ...

  8. hdu 4035 可能性DP 成都网络游戏

    http://acm.hdu.edu.cn/showproblem.php?pid=4035 获得: 1.首先推断是不是树.事实上,所有的感觉身影,既看边数==算-1是不成立 2.有时候,我告诉孩子来 ...

  9. hdu4418 概率dp+高斯消元(近日吐槽)

    因为过年,好久没更博客了,最近要狂补题解了== 1.做了几天的概率dp,稍后还要写一篇概率dp和期望的总结,当然,下面几天的专题还是概率dp 2.接着还要整理一个漂亮的高斯消元模板= 3.最近打了几场 ...

最新文章

  1. 目标检测中的分类和定位冲突问题
  2. 【经典概念】一文详解Batch Normalization!!!
  3. 机器学习中你不可不知的几个算法常识
  4. Freemarker条件判断
  5. xftp提示过期的解决方法
  6. Oracle 数据库基础学习 (六) 子查询
  7. 华为2017年财报,为何6036亿销售收入,净利润才479亿?
  8. 迪杰斯特拉算法(最短路径)
  9. redis笔记——redis事务及锁应用
  10. 刚入行的UI设计师,通过临摹优秀UI KIT作品开始
  11. ubuntu编译libid3tag库报错问题解决
  12. 优化算法|布谷鸟算法原理及实现
  13. 轻量级的java HTTP Server——NanoHttpd
  14. O2O电子商务盈利模式是什么 O2O电子商务模式遇到的困难有哪些?
  15. AtCoder Beginner Contest 043题解(ABCD)
  16. 【转载】Aquanaut:水下变形金刚
  17. C#招行支付流程(一网通支付-PC扫码支付)
  18. php示例代码之使用MySQLi接口
  19. python自动读取excel文件邮箱列表,自动批量发送邮件项目(附使用方法+代码)
  20. css 实现鼠标悬浮时等比放大图片,鼠标移出时还原图片

热门文章

  1. Spring+SpringMVC+Mybatis框架集成搭建教程
  2. PHP中上传文件文件名乱码
  3. git 入门教程之版本管理
  4. 【线上直播】深度学习简介与落地实战经验分享
  5. 客户说有了PAI-AutoML,一下子可以节约半年开发周期
  6. 区块链100讲:EOS环境搭建入门(私链节点-钱包-密钥-账号)
  7. 数据泄漏防御在企业的应用
  8. 获取一段html的内容简介
  9. 《数据驱动安全:数据安全分析、可视化和仪表盘》一3.7 推荐阅读
  10. SpringBoot笔记——1