/*
题目大意:有n个房间由n-1个隧道连接起来,从1号房间开始,
每个节点i都有三种可能:
1.被杀死,回到节点1,概率为ki;
2.找到出口,离开迷宫,概率ei;
3.与它相连的有m个房间,到任意相连房间的概率(1-ki-ei)/m;
求走出迷宫要走房间个数的期望。
E[i]表示在节点i处的期望值,E[1]即为答案,从后往前推。
E[1]=k1*E[1]+sigma(E[j])*(1-k1-e1)/childsize[i]+(1-k1-e1)
非叶子节点:
E[i]=ki*E[1]+(E[father[i]]+sigma(E[j])*(1-ki-ei)/(childsize[i]+1)+(1-ki-ei)
叶子节点:
E[i]=ki*E[1]+E[father[i]]*(1-ki-ei)+(1-ki-ei)
一般形式:
E[i]=Ai*E[1]+Bi*E[father[i]]*(1-ki-ei)+Ci;
E[j]=Aj*E[1]+Bj*E[father[j]]*(1-kj-ej)+Cj
把儿子节点代入
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)
把E[i]化简,从下递推到上,可求出E[1]=A1*E[1]+B1*0+C1。
*/
#pragma warning (disable : 4786)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std; const double eps=1e-;
const int maxn=;
double E[maxn],A[maxn],B[maxn],C[maxn];
double k[maxn],e[maxn];
vector<int> f[maxn]; bool dfs(int v,int pre)
{
A[v]=k[v];B[v]=(-k[v]-e[v])/f[v].size();
C[v]=-k[v]-e[v];
double temp=;
for(int i=;i<f[v].size();i++)
{
int u=f[v][i];
if(u==pre) continue;
if(!dfs(u,v)) return false;
A[v]+=B[v]*A[u];
C[v]+=B[v]*C[u];
temp+=B[v]*B[u] ;
}
if(fabs(temp-)<eps)
return false;
A[v]/=(-temp);
B[v]/=(-temp);
C[v]/=(-temp);
return true;
}
int main()
{
int t,n,i,a,b,icase=;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=;i<=n;i++) f[i].clear();
for(i=;i<n;i++)
{
scanf("%d%d",&a,&b);
f[a].push_back(b);
f[b].push_back(a);
}
for(i=;i<=n;i++)
{
scanf("%lf%lf",&k[i],&e[i]);
k[i]/=;e[i]/=;
}
printf("Case %d: ",++icase);
if(dfs(,-) && fabs(-A[])>eps)
printf("%.6lf\n",C[]/(-A[]));
else printf("impossible\n");
}
return ;
}

hdu 4305 概率dp的更多相关文章

  1. HDU 4599 概率DP

    先推出F(n)的公式: 设dp[i]为已经投出连续i个相同的点数平均还要都多少次才能到达目标状态. 则有递推式dp[i] = 1/6*(1+dp[i+1]) + 5/6*(1+dp[1]).考虑当前这 ...

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

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

  3. hdu 3853 概率dp

    题意:在一个R*C的迷宫里,一个人在最左上角,出口在右下角,在每个格子上,该人有几率向下,向右或者不动,求到出口的期望 现在对概率dp有了更清楚的认识了 设dp[i][j]表示(i,j)到(R,C)需 ...

  4. HDU 4815 概率dp,背包

    Little Tiger vs. Deep Monkey Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K ( ...

  5. hdu 4050(概率dp)

    算是挺简单的一道概率dp了,如果做了前面的聪聪于可可的话,这题不需要什么预处理,直接概率dp就行了... #include <stdio.h> #include <stdlib.h& ...

  6. HDU 4405 (概率DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4405 题目大意:飞行棋.如果格子不是飞行点,扔骰子前进.否则直接飞到目标点.每个格子是唯一的飞行起点 ...

  7. hdu 4336 概率dp + 状压

    hdu 4336 小吃包装袋里面有随机赠送一些有趣的卡片,如今你想收集齐 N 张卡片.每张卡片在食品包装袋里出现的概率是p[i] ( Σp[i] <= 1 ), 问你收集全部卡片所需购买的食品数 ...

  8. hdu 4576(概率dp+滚动数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576 思路:由于每次从某一位置到达另一位置的概率为0.5,因此我们用dp[i][j]表示第i次操作落在 ...

  9. hdu 5001 概率DP 图上的DP

    http://acm.hdu.edu.cn/showproblem.php?pid=5001 当时一看是图上的就跪了 不敢写,也没退出来DP方程 感觉区域赛的题  一则有一个点难以想到 二则就是编码有 ...

随机推荐

  1. 一个简单的WPF MVVM实例【转载】

    引用地址:http://blog.csdn.net/yl2isoft/article/details/20838149 1 新建WPF 应用程序WPFMVVMExample 程序结构如下图所示. 2  ...

  2. 如何删除hive表格的分区

    今天的一个业务场景就是要把三年的数据从第一天不停的融合起来,每一天作为表格一个新的分区.由于空间有限,数据量很大,可能每天数据都是几十个G的大小.所以我需要做的一点就是在融合这一天之后,删除一天的分区 ...

  3. Redis和Mecahe的简介

    Memcache介绍 概念:Memcache是一个高性能,分布式内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等. ...

  4. IIS发布错误记录

    1.HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 BeginRequ ...

  5. 9.2python操作redis

    Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  6. Android开发——View滑动冲突解决方案

    0. 前言   我们在Android开发--事件分发机制详解中深入学习了事件分发机制,为我们解决Android开发中的滑动冲突问题做了初步准备.针对滑动冲突这里给出两种解决方案:外部拦截法和内部拦截法 ...

  7. Android开发——弹性滑动的两种实现方式

    0. 前言   欢迎转载,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52538723 我们在Android开发--View滑动的三 ...

  8. Javascript Step by Step - 02

    DOM 操作 DOM是面向HTML和XML文档的API,为文档提供了结构化表示.在DOM中一切都是节点Node,文档就是由许多的Node组成的.文档里的每个节点都有属性 nodeName.nodeVa ...

  9. Activiti入门 -- 环境搭建和核心API简介

    相关文章: <史上最权威的Activiti框架学习指南> <Activiti入门 -- 轻松解读数据库> 本章内容,主要讲解Activiti框架环境的搭建,能够使用Activi ...

  10. 《Cracking the Coding Interview》——第18章:难题——题目8

    2014-04-29 03:10 题目:给定一个长字符串S和一个词典T,进行多模式匹配,统计S中T单词出现的总个数. 解法:这是要考察面试者能不能写个AC自动机吗?对面试题来说太难了吧?我不会,所以只 ...