/*
题目大意:有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. 用php读取xml数据

    parser是php内置的一个用来处理xml的解析器,它的工作由三个事件组成:起始标签. 读取数据.结束标签. 也就是说在对xml进行处理的时候每当遇到起始标签.数据和结束标签的时候函数会做相应的动作 ...

  2. IAR 编译时找不到头文件的解决方法

    Fatal Error[Pe1696]: cannot open source file "x.h" 那是因为头文件路径没有找对 到报错的.c源文件 选中右键 选择options ...

  3. 边缘检测 opencv

    本次实验使用了两种方法进行了边缘检测,分别使用到了opencv中的两个API函数为Canny()和Sobel()函数.实验后加了Scharr滤波器,它其实是基于Sobel()函数的. 这三个API中的 ...

  4. POJ:2976-Dropping tests(二分平均值)

    Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15508 Accepted: 5418 Descr ...

  5. 大话卷积神经网络(CNN)

      这几年深度学习快速发展,在图像识别.语音识别.物体识别等各种场景上取得了巨大的成功,例如AlphaGo击败世界围棋冠军,iPhone X内置了人脸识别解锁功能等等,很多AI产品在世界上引起了很大的 ...

  6. 使用dataframe解决spark TopN问题:分组、排序、取TopN和join相关问题

    package com.profile.mainimport org.apache.spark.sql.expressions.Windowimport org.apache.spark.sql.fu ...

  7. 20145202 《Java程序设计》实验四实验报告

    实验名称 Andoid开发基础 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android组件.布局管理器的使用: 3.掌握Android中事件处理 ...

  8. 3 破解密码,xshell连接

    1.破解root密码 (1)启动电脑,按上下键进入启动菜单界面,选择第二个Red Hat Enterprise Linux Server, with Linux 0-rescue-* (2)按 'e' ...

  9. UOJ #2321. 「清华集训 2017」无限之环

    首先裂点表示四个方向 一条边上都有插头或者都不有插头,相当于满足流量平衡 最大流 = 插头个数*2时有解 然后求最小费用最大流 黑白染色分别连原点汇点

  10. 剑指Offer - 九度1373 - 整数中1出现的次数(从1到n整数中1出现的次数)

    剑指Offer - 九度1373 - 整数中1出现的次数(从1到n整数中1出现的次数)2014-02-05 23:03 题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直 ...