题目链接

hdu4035 Maze

题解

f[u]表示在节点u通关的所需的边数期望

转移方程分叶子节点和非叶子点讨论

发现都可以化成f[x]=af[1]+bf[dad]+c的形式

然后推一下系数

还是看这个吧https://www.cnblogs.com/Paul-Guderian/p/7624039.html

代码

#include<cmath>
#include<cstdio>
#include<ctime>
#include<cstring>
#include<algorithm>
inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9')c = getchar();
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
return x * f;
}
#define eps 1e-9
const int maxn = 100007;
struct node {
int v,next;
} edge[maxn << 1];
int head[maxn],num = 0;
inline void add_edge(int u,int v) {
edge[++ num].v = v; edge[num].next = head[u]; head[u] = num;
}
int n;
int a[maxn];
double A[maxn],B[maxn],C[maxn];
double k[maxn],e[maxn];
bool dfs(int x,int fa) {
if(!edge[head[x]].next && x != 1) {
A[x] = k[x];
B[x] = 1 - k[x] - e[x];
C[x] = 1 - k[x] - e[x];
return true;
}
double A_ = 0,B_ = 0,C_ = 0; int cnt = 0;
for(int i = head[x];i;i = edge[i].next) {
int v = edge[i].v;
if(++ cnt && v != fa) {
if(!dfs(v,x)) return false;
A_ += A[v];B_ += B[v],C_ += C[v];
}
}
if(fabs(1 - (1 - k[x] - e[x]) / cnt * B_) < eps) return false ;
A[x] = (k[x] + (1 - k[x] - e[x]) / cnt * A_ ) / (1 - (1 - k[x] - e[x]) / cnt * B_);
B[x] = ((1 - k[x] - e[x]) / cnt) / (1 - (1 - k[x] - e[x]) / cnt * B_);
C[x] = (1 - k[x] - e[x] + (1 - k[x] - e[x]) / cnt * C_) / (1 - (1 - k[x] - e[x]) / cnt * B_);
return true;
}
int main() {
int Q = read();
for(int t = 1;t <= Q;t += 1) {
memset(head,0,sizeof head);
num = 0;
n = read();
for(int i = 1;i < n;++ i) {
int u = read(),v = read();
add_edge(u,v);add_edge(v,u);
}
for(int i = 1;i <= n;++ i) {
scanf("%lf%lf",&k[i],&e[i]);
k[i] /= 100,e[i] /= 100;
}
printf("Case %d : ",t);
if(!dfs(1,1) || fabs(1 - A[1]) < eps) {
puts("impossible"); continue;
} else printf("%.6lf\n",C[1] / (1 - A[1]));
}
}

hdu4035 Maze的更多相关文章

  1. HDU-4035 Maze

    http://acm.hdu.edu.cn/showproblem.php?pid=4035 树上的概率dp.   Maze Time Limit: 2000/1000 MS (Java/Others ...

  2. HDU4035 Maze(师傅逃亡系列•二)(循环型 经典的数学期望)

    When wake up, lxhgww find himself in a huge maze. The maze consisted by N rooms and tunnels connecti ...

  3. [HDU4035] Maze(概率DP)

    HDU4035 有\(n\)个房间 , 由\(n-1\)条隧道连通起来 , 实际上就形成了一棵树 , 从结点\(1\)出发 , 开始走 , 在每个结点\(i\)都有\(3\)种可能 : \(1.\)被 ...

  4. HDU-4035 Maze (概率DP求期望)

    题目大意:在一个树形迷宫中,以房间为节点.有n间房间,每间房间存在陷阱的概率为ki,存在出口的概率为ei,如果这两种情况都不存在(概率为pi),那么只能做出选择走向下一个房间(包括可能会走向上一个房间 ...

  5. HDU4035 Maze 【树形DP】【期望DP】

    题目分析: 以前一直不会这个方法, 我好菜啊. 转移分为三个部分,一个是直接成功,一个是转移到E1,还有一个是转移到自己周围的一圈儿点. 如果是叶子那么只能转移到父亲,如果不是叶子可以把非叶子的转移代 ...

  6. hdu4035 Maze 【期望dp + 数学】

    题目链接 BZOJ4035 题解 神题啊...orz 不过网上题解好难看,数学推导不写\(Latex\)怎么看..[Latex中毒晚期] 我们由题当然能很快写出\(dp\)方程 设\(f[i]\)表示 ...

  7. HDU4035 Maze(期望DP)

    题意 抄袭自https://www.cnblogs.com/Paul-Guderian/p/7624039.html 有n个房间,由n-1条隧道连通起来,形成一棵树,从结点1出发,开始走,在每个结点i ...

  8. hdu4035 Maze (树上dp求期望)

    dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 ...

  9. [hdu4035] Maze【概率dp 数学期望】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4035 真的是一道好题,题解比较麻烦,我自己在纸上写了好大一块草稿才搞出来,不用公式编辑器的话就很难看清楚 ...

随机推荐

  1. 生成ansible-playbook的yaml文件的代码(字典排序问题无法解决)

    import yaml import collections def add_task(): return None def add_vars(): return None def add_handl ...

  2. 在docker中部署centos7镜像

    本篇文章参考自: https://www.cnblogs.com/linjj/p/5606911.html https://blog.csdn.net/u012767761/article/detai ...

  3. Android通讯:通话

    Android通讯之通话功能的实现: 在Android中,android.telephony.TelephonyManager对象是开发者获取当前通话网络相关信息的窗口,通过TelephonyMana ...

  4. PYTHON-UDP

    1.TCP 和 UDP 发送数据时的流程 ***** 解释 为何TCP是可靠的 是因为发送数据后必须收到确认包 2. UDP的模板代码 ***** 1.UDP协议: (数据报协议) 特点: 无连接 优 ...

  5. js判断用户的浏览器

    1,判断pc和移动端 function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase(); var bIsI ...

  6. java多线程快速入门(十一)

    在方法上面加synchonizd用的是this锁 package com.cppdy; class MyThread7 implements Runnable { private Integer ti ...

  7. wpf Assembly.LoadFile dll GetType 反射 抛异常 不具有由 URI 识别的资源。

    public static void LoadViewFromUri(this Window window, string baseUri) { try { var resourceLocater = ...

  8. 【linux】crontab失效

    在linux上,crontab任务全部使用完整路径,但是任务无效. 检测crontab 服务是否启动, /etc/init.d/cron status /etc/init.d/cron restart

  9. 升级 php composer 版本

    在执行 composer update 时,报错 You made a reference to a non-existent script @php artisan package:discover ...

  10. web中切图、快速切图与web雪碧图制作的方法

    声明: web小白的笔记,欢迎大神指点,联系QQ:1522025433. 工具:Photoshop 1.复制文字:点击文章工具后选择文字. 2.矩形选框工具 看信息 f8, 取消矩形选框 Ctrl+D ...