解题报告链接:

http://www.cnblogs.com/kuangbin/archive/2012/10/03/2711108.html

先推公式,设计状态,令DP[i]表示在房间i退出要走步数的期望值,然后推导出关系式,亮点来了,不会搜索···

so,等我学会了搜索后明天再写····

哈哈,已经学会了,自己设计的,和解题报告的不太一样,一个DFS解决···

看代码吧···我不知道怎么说····

贴代码:

 //#define debug
#include <cstdio>
#include <vector>
#include <cmath>
#define N 10005
#define eps 1e-10
using namespace std;
vector<int> ve[N];
struct node
{
double ki,wal;
} p[N];
struct para
{
double a,b,c;
};
int n;
bool vis[N];
para dfs(int x)
{
vis[x] = ;
bool flag = true;
para t,t1,t2;
//t1用来求sum(j),其中j为x的子节点
t1.a = ;
t1.b =;
t1.c = ;
for(int i=; i<ve[x].size(); ++i)
{
if(!vis[ve[x][i]])
{
flag =false;
t2 = dfs(ve[x][i]);
t1.a += t2.a;
t1.b += t2.b;
t1.c += t2.c;
}
}
// 对于非叶子节点:j为i的子节点
// Ai = (ki+(1-ki-ei)/m*∑Aj) / (1 - (1-ki-ei)/m*∑Bj);
// Bi = (1-ki-ei)/m / (1 - (1-ki-ei)/m*∑Bj);
// Ci = ( (1-ki-ei)+(1-ki-ei)/m*∑Cj ) / (1 - (1-ki-ei)/m*∑Bj);
// 对于叶子节点:
// Ai = ki;
// Bi = 1 - ki - ei;
// Ci = 1 - ki - ei;
// wal = 1-ki-exi
if(flag)//叶子节点
{
t.a = p[x].ki;
t.b = p[x].wal;
t.c = p[x].wal;
}
else//非叶子节点
{
int m = ve[x].size();
double f = - p[x].wal / m*t1.b;
t.a =(p[x].ki + p[x].wal/m*t1.a) /f ;
t.b = p[x].wal/m/f ;
t.c = (p[x].wal + p[x].wal/m*t1.c) / f;
}
return t;
}
int main()
{
#ifdef debug
freopen("in.c","r",stdin);
#endif
int t;
scanf("%d",&t);
for(int d =; d<=t ; ++d)
{
for(int i=; i<=n; ++i) ve[i].clear();
scanf("%d",&n);
for(int i=; i<n; ++i)
{
int u,v;
scanf("%d%d",&u,&v);
ve[u].push_back(v);
ve[v].push_back(u);
}
for(int i=; i<=n; ++i)
{
int k,e;
scanf("%d%d",&k,&e);
p[i].ki = (double)k/100.0;
p[i].wal = - p[i].ki - (double)e/100.0;
}
memset(vis,,sizeof(vis));
para ans = dfs();
printf("Case %d: ",d);
if(fabs(ans.a-) < eps)
printf("impossible\n");
else
printf("%.6f\n",ans.c/(-ans.a));
}
return ;
}

HDU 4035 Maze 概率DP 搜索的更多相关文章

  1. HDU 4035 Maze 概率dp,树形dp 难度:2

    http://acm.hdu.edu.cn/showproblem.php?pid=4035 求步数期望,设E[i]为在编号为i的节点时还需要走的步数,father为dfs树中该节点的父节点,son为 ...

  2. hdu 4035 Maze 概率DP

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

  3. 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< ...

  4. HDU.4035.Maze(期望DP)

    题目链接 (直接)设\(F(i)\)为在\(i\)点走出迷宫的期望步数.答案就是\(F(1)\). 令\(p_i=1-k_i-e_i\),表示\(i\)点沿着边走的概率:\(d_i=dgr[i]\), ...

  5. HDU - 4035 循环型概率DP

    题解待会在上 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring ...

  6. HDU 4035Maze(概率DP)

    HDU 4035   Maze 体会到了状态转移,化简方程的重要性 题解转自http://blog.csdn.net/morgan_xww/article/details/6776947 /** dp ...

  7. HDU4035 Maze (概率DP)

    转:https://www.cnblogs.com/kuangbin/archive/2012/10/03/2711108.html 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, ...

  8. HDU 3853LOOPS(简单概率DP)

    HDU 3853    LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...

  9. HDU - 1099 - Lottery - 概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...

随机推荐

  1. 【Docker】性能测试监控平台搭建:InfluxDB+Grafana+Jmeter+cAdvisor

    前言 在做性能测试时,如果有一个性能测试结果实时展示的页面,可以极大的提高我们对系统性能表现的掌握程度,进而提高我们的测试效率.但是我们每次打开Jmeter都会有几个硕大的字提示别用GUI模式进行负载 ...

  2. Typekit在线字库及使用方法

    一.如果设计中使用了非标准的字体,你该如何去实现? 所谓的标准字体是多数机器上都会有的,或者即使没有也可以由默认字体替代的字体. 方法: 用图片代替 web fonts在线字库,如Google Web ...

  3. Java JDK5新特性-增强for

    2017-10-31 00:02:16 格式: for(元素数据类型 变量:数组或者Collection集合) { 使用变量即可,该变量即是元素 } int arr[] = {1,2,3,4,5}; ...

  4. C++STL2--map

    C++STL2--map 一.心得 本质上就是数组,关联数组,map就是键到值得一个映射,并且重载了[]符号,所以可以像数组一样用. map<string,int> cnt;//前键后值, ...

  5. ThreadLocal实现原理

      一.ThreadLocal介绍     这是一个线程的局部变量.也就是说,只有当前线程可以访问.既然是只有当前线程可以访问的数据,自然是线程安全的.     为每一个线程分配不同的对象,需要在应用 ...

  6. codeforces 521a//DNA Alignment// Codeforces Round #295(Div. 1)

    题意:如题定义的函数,取最大值的数量有多少? 结论只猜对了一半. 首先,如果只有一个元素结果肯定是1.否则.s串中元素数量分别记为a,t,c,g.设另一个串t中数量为a',t',c',g'.那么,固定 ...

  7. .split(",", -1);和.split(",")的区别

    .split(",", -1);和.split(",")的区别在于://eg:String a="河南省,,金水区".//a.split(& ...

  8. 使用API更新供应商名称及曾用名

    原文地址 更新供应商名称 EBS R12 (12.1.3) 更新供应商名称或替代供应商名称不能直接使用 pos_vendor_pub_pkg.update_vendor(p_vendor_rec =& ...

  9. OAF 动态创建组件以及动态绑定属性

    在开发中,我们遇到以下一个需求. 一个表格左侧有5列是固定存在的,右侧有N列是动态生成的,并且该N列中第一列可输入,第二列是不可编辑的,但是是数字,如果小于0,那么就要显示为红色,重点标识出来. 首先 ...

  10. Activiti工作流笔记(4)

    Activiti工作流启动流程 /** * 启动流程 * */ public class ActivitiTest2 { RepositoryService repositoryService; Ru ...