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的更多相关文章
- HDU-4035 Maze
http://acm.hdu.edu.cn/showproblem.php?pid=4035 树上的概率dp. Maze Time Limit: 2000/1000 MS (Java/Others ...
- HDU4035 Maze(师傅逃亡系列•二)(循环型 经典的数学期望)
When wake up, lxhgww find himself in a huge maze. The maze consisted by N rooms and tunnels connecti ...
- [HDU4035] Maze(概率DP)
HDU4035 有\(n\)个房间 , 由\(n-1\)条隧道连通起来 , 实际上就形成了一棵树 , 从结点\(1\)出发 , 开始走 , 在每个结点\(i\)都有\(3\)种可能 : \(1.\)被 ...
- HDU-4035 Maze (概率DP求期望)
题目大意:在一个树形迷宫中,以房间为节点.有n间房间,每间房间存在陷阱的概率为ki,存在出口的概率为ei,如果这两种情况都不存在(概率为pi),那么只能做出选择走向下一个房间(包括可能会走向上一个房间 ...
- HDU4035 Maze 【树形DP】【期望DP】
题目分析: 以前一直不会这个方法, 我好菜啊. 转移分为三个部分,一个是直接成功,一个是转移到E1,还有一个是转移到自己周围的一圈儿点. 如果是叶子那么只能转移到父亲,如果不是叶子可以把非叶子的转移代 ...
- hdu4035 Maze 【期望dp + 数学】
题目链接 BZOJ4035 题解 神题啊...orz 不过网上题解好难看,数学推导不写\(Latex\)怎么看..[Latex中毒晚期] 我们由题当然能很快写出\(dp\)方程 设\(f[i]\)表示 ...
- HDU4035 Maze(期望DP)
题意 抄袭自https://www.cnblogs.com/Paul-Guderian/p/7624039.html 有n个房间,由n-1条隧道连通起来,形成一棵树,从结点1出发,开始走,在每个结点i ...
- hdu4035 Maze (树上dp求期望)
dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 ...
- [hdu4035] Maze【概率dp 数学期望】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4035 真的是一道好题,题解比较麻烦,我自己在纸上写了好大一块草稿才搞出来,不用公式编辑器的话就很难看清楚 ...
随机推荐
- Linux驱动技术(三) _DMA编程【转】
转自:https://www.cnblogs.com/xiaojiang1025/archive/2017/02/11/6389194.html DMA即Direct Memory Access,是一 ...
- 自助Linux之问题诊断工具strace【转】
转自:http://www.cnblogs.com/bangerlee/archive/2012/02/20/2356818.html 引言 “Oops,系统挂死了..." “Oops,程序 ...
- jvm系列三、java GC算法 垃圾收集器
原文链接:http://www.cnblogs.com/ityouknow/p/5614961.html 概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 ...
- dubbo系列一、dubbo背景介绍、微服务拆分
一.背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 二.传统应用到分布式应用的演进过程 ...
- ORACLE 利用SCN恢复误delete的表
--kg是误删除的表 SQL> select count(*) from kg; COUNT(*) ---------- 820861 SQL> delete from kg; ...
- route 的标志位
linux下利用route命令查看当前路由信息时,会打印如下信息: root@root:/# route Kernel IP routing tableDestination Gateway ...
- zabbix系列(十)zabbix添加对zookeeper集群的监控
1.应用场景描述 在目前公司的业务中,有部分ESB架构用ZooKeeper作为协同服务的场景,做好ZooKeeper的监控很重要. 2.ZooKeeper监控要点 系统监控 内存使用量 ZooK ...
- python环境下使用tab自动补全命令
# vim /usr/lib/python2.7/dist-packages/tab.py 加入如下内容: #!/usr/bin/env python # python startup file im ...
- 01 响应式页面-@media介绍,
我们为什么要写自适应的页面(响应式页面) 众所周知,电脑.平板.手机的屏幕是差距很大的,假如在电脑上写好了一个页面,在电脑上看起来不错,但是如果放到手机上的话,那可能就会乱的一塌糊涂,这时候怎么解决呢 ...
- PYTHON-文件指针的移动,移动和函数基础
# 文件内指针的移动 #大前提:文件内指针的移动是Bytes为单位的,唯独t模式下的read读取内容个数是以字符为单位 # f.seek(指针移动的字节数,模式控制): 控制文件指针的移动# 模式控制 ...