HDU 4035 期望dp
这道题站在每个位置上都会有三种状态
死亡回到起点:k[i]
找到出口结束 e[i]
原地不动 p[i]
k[i]+e[i]+p[i] =1;
因为只给了n-1条路把所有都连接在一起,那么我们可以自然的把这张图看成一个树型结构
根据作为父亲节点和叶子节点作为区分
进行推导
详情可参考:http://blog.csdn.net/morgan_xww/article/details/6776947/
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
#define N 10005
#define del 1e-10
vector <int> G[N];
double A[N],B[N],C[N],k[N],e[N],p[N];
int n;
bool solve(int u,int fa)
{
A[u] = k[u];
B[u] = p[u] / G[u].size();
C[u] = p[u]; if(G[u].size() == && fa!=)
return true; double tmp = ;
for(int i=;i<G[u].size();i++){
int j = G[u][i];
if(j!=fa)
{
//既是一个判断过程也是一个找叶子节点的过程,先做递归是为了先更新好叶子节点作为底层的信息,
//用以推得上层信息
if(!solve(j,u))
return false;
A[u]+=B[u]*A[j];
C[u]+=B[u]*C[j];
tmp +=B[u]*B[j];
}
} tmp = -tmp;
if(tmp < del)
return false; A[u] /= tmp;
B[u] /= tmp;
C[u] /= tmp; return true;
} int main()
{
int T,a,b,c,d;
scanf("%d",&T);
for(int kase=;kase<=T;kase++){
scanf("%d",&n); for(int i=;i<=n;i++)
G[i].clear(); for(int i=;i<n;i++){
scanf("%d%d",&a,&b);
G[a].push_back(b);
G[b].push_back(a);
}
for(int i=;i<=n;i++){
scanf("%d%d",&c,&d);
k[i] = c*1.0/;
e[i] = d*1.0/;
p[i] = -k[i]-e[i];
} printf("Case %d: ",kase); if(!solve(,) || -A[]<del){
printf("impossible\n");
continue;
} printf("%.6f\n",C[] / (-A[]));
}
}
HDU 4035 期望dp的更多相关文章
- poj 2096 , zoj 3329 , hdu 4035 —— 期望DP
题目:http://poj.org/problem?id=2096 题目好长...意思就是每次出现 x 和 y,问期望几次 x 集齐 n 种,y 集齐 s 种: 所以设 f[i][j] 表示已经有几种 ...
- HDU 4405 期望DP
期望DP算是第一题吧...虽然巨水但把思路理理清楚总是好的.. 题意:在一个1×n的格子上掷色子,从0点出发,掷了多少前进几步,同时有些格点直接相连,即若a,b相连,当落到a点时直接飞向b点.求走到n ...
- hdu 4035 可能性DP 成都网络游戏
http://acm.hdu.edu.cn/showproblem.php?pid=4035 获得: 1.首先推断是不是树.事实上,所有的感觉身影,既看边数==算-1是不成立 2.有时候,我告诉孩子来 ...
- HDU 3853(期望DP)
题意: 在一个r*c的网格中行走,在每个点分别有概率向右.向下或停止不动.每一步需要的时间为2,问从左上角走到右下角的期望时间. SOL: 非常水一个DP...(先贴个代码挖个坑 code: /*== ...
- poj 2096 Collecting Bugs && ZOJ 3329 One Person Game && hdu 4035 Maze——期望DP
poj 2096 题目:http://poj.org/problem?id=2096 f[ i ][ j ] 表示收集了 i 个 n 的那个. j 个 s 的那个的期望步数. #include< ...
- hdu 4035 2011成都赛区网络赛E 概率dp ****
太吊了,反正我不会 /* HDU 4035 dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点 ...
- HDU 4405 Aeroplane chess 期望dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4405 Aeroplane chess Time Limit: 2000/1000 MS (Java/ ...
- HDU 3853 LOOPS:期望dp【网格型】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意: 有一个n*m的网格. 给出在每个格子时:留在原地.向右走一格,向下走一格的概率. 每走一 ...
- 升级降级(期望DP)2019 Multi-University Training Contest 7 hdu杭电多校第7场(Kejin Player)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意: 有 1~n 个等级,你现在是1级,求升到n级的花费期望.会给你n个条件(i~i+1级升级 ...
随机推荐
- 嵌套查询--------关联一对多关系----------collection
参考来源: http://www.cnblogs.com/LvLoveYuForever/p/6689577.html <resultMap id="BaseResultMap&q ...
- python general
everything in python is object assignment is binding a name to an object one object can have several ...
- MVP架构模式
概念解释 MVP是Model(数据) View(界面) Presenter(表现层)的缩写,它是MVC架构的变种,强调Model和View的最大化解耦和单一职责原则 Model:负责数据的来源和封装, ...
- C++中的数学函数汇总
math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有: 1 三角函数 double sin (double); double cos (double); double t ...
- [转]C#Linq中的Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods,skip,take,takewhile,skipwhile,编译查询等
本文转自:http://www.cnblogs.com/suizhikuo/p/3791799.html 我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Inte ...
- [BZOJ1088][SCOI2005]扫雷Mine DP
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1088 记录下每一个格子对应左边格子放的雷的情况,然后dp转移就好了. #include&l ...
- GCC的函数声明问题
Thinking in C++ 第四章 GCC 不需要再MAIN函数前声明 编译也能通过. G++不行.
- Pycharm+Django+Python+MySQL开发 后台管理数据库
Django框架十分简单易用,适合搭建个人博客网站.网上有很多教程,大多是关于命令行操作Django,这里分享一些用最新工具进行Django开发过程,主要是PyCharm太强大,不用有点可惜. 第一次 ...
- web 自动化测试 selenium基础到应用(目录)
第一章 自动化测试前提及整体介绍 1-1功能测试和自动化测试的区别 1-2自动化测试流程有哪些 1-3自动化测试用例和手工用例的区别 1-4 自动化测试用例编写 1-5 selenium的优势以及 ...
- InChatter系统开源聊天模块前奏曲
最近在研究WCF,又因为工作中的项目需要,要为现有的系统增加一个聊天模块以及系统消息提醒等,因此就使用WCF做服务器端开发了一个简单的系统. 开发最初学习了东邪孤独大哥的<传说的WCF系列> ...