LINK


题目大意

一棵树,上面的每个点都有一定概率成为起点和终点

从起点出发,随机游走,并按照下列规则统计count:

DFS(x)if x == exit vertex thenfinish searchflag[x] <- TRUErandom shuffle the vertices' order in V(x) // here all permutations have equal probability to be chosenfor i <- 1 to length[V] doif flag[V[i]] = FALSE thencount++;DFS(y);count++;

求count的期望


思路

首先来证明一个东西:

对于每个节点u,如果这个节点是终点,那么他的贡献是
\[ \sum_{(u,v)\in E}siz_v*sump_v \]
\(sump_v\)是子树内每个节点作为起始节点的概率和

首先我们把一个以u为根子树拿出来,对于其中的每一个点v

如果起始节点s在v的子树内,v一定会被经过1次,贡献\(p_s\)

如果s不在v的子树内,v有\(\frac{1}{2}\)的概率会被经过,贡献\(p_s*2*\frac{1}{2}=p_s\)

不被经过的贡献是\(0\)

然后来证为为什么有\(\frac{1}{2}\)的概率被经过

从s开始进入每个子树,要么遍历完,要么停下来

所以可以认为任何一个子树在停下来之前被访问的概率都是\(\frac{1}{2}\)

然后这题做完了。。。泪奔ing


#include<bits/stdc++.h>using namespace std;typedef double db;const int N = 1e5 + 10;int n, siz[N];
vector<int> g[N];
db p[N], q[N], sump = 0, sumq = 0, ans;void dfs(int u, int fa) {siz[u] = 1;for (auto v : g[u]) {if (v == fa) continue;dfs(v, u);siz[u] += siz[v];p[u] += p[v];ans += q[u] * siz[v] * p[v];}ans += q[u] * (n - siz[u]) * (sump - p[u]);
}int main() {scanf("%d", &n);for (int i = 1; i < n; i++) {int u, v;scanf("%d %d", &u, &v);g[u].push_back(v);g[v].push_back(u); }for (int i = 1; i <= n; i++) {scanf("%lf %lf", &p[i], &q[i]);sump += p[i], sumq += q[i];}dfs(1, 0);printf("%.15lf", ans / (sump * sumq));return 0;
} 

转载于:https://www.cnblogs.com/dream-maker-yk/p/10206311.html

Codeforces123E. Maze【树形dp】【概率dp】【证明题】相关推荐

  1. 插头DP 概率DP / 期望DP

    插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...

  2. 动态规划报告(树形DP+概率DP

    动态规划报告 树形dp 树形 DP,即在树上进行的 DP.由于树固有的递归性质,树形 DP 一般都是递归进行的.一般需要在遍历树的同时维护所需的信息 以一道题目为例 2022CCPC桂林站G Grou ...

  3. BZOJ3566 [SHOI2014]概率充电器 (树形DP概率DP)

    3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全新纳米级加工技术,实现元件与 ...

  4. 关于概率dp的个人理解与总结

    原文来自:http://blog.csdn.net/wdcjdtc/article/details/38424029 首先,概率dp主要解决的是关于概率问题和期望问题的求解. 难点和普通dp一样在于d ...

  5. HDU - 4035 Maze(概率dp)

    题目链接:点击查看 题目大意:给出一个 n 个点的树,初始时位于点 1 ,每个点都会给出一个概率 k[ i ] 和一个概率 e[ i ] ,其代表的意义分别是: k[ i ] :在点 i 有 k[ i ...

  6. HDU-4035 Maze 概率DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4035 很不错的概率DP题目,因为这题是无向图,所以要对叶节点和非叶节点考虑,然后列出方程后,因为数据很 ...

  7. LightOJ 1395 A Dangerous Maze (II) (概率dp)

    题意:给出n扇门,每扇门都给出一个数x,若为正数,则表示在x时间后走出迷宫,若为负数,则表示在x时间后回到起点,你会记得最后k扇你走过的门(不会再走),求最后的期望时间. 题解:概率dp 这题的进阶版 ...

  8. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  9. 2018.09.01 poj3071Football(概率dp+二进制找规律)

    传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...

  10. hdu 3853 LOOPS 概率DP

    简单的概率DP入门题 代码如下: 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 ...

最新文章

  1. 数据导出为Excel(未完)
  2. html广告位代码,一段CSS代码让你的广告位“立起来”
  3. perl的Getopt::Long和pod::usage
  4. chrome使用 postwoman_Postman的情敌,Postwoman了解一下
  5. 微服务架构 为什么需要配置中心
  6. 吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习
  7. 02-Wifi通讯架构介绍
  8. 怎么使用小爱同学音响_智能音响购买指南!!!
  9. AJAX淋漓尽致的发挥(Google个性化主页 VS. Windows Live.COM)站在互联网浪尖上窃喜...
  10. 张朝阳直播带货首秀 带的不仅是好物而是价值平台
  11. [视频教程]用Unity3d开发跳一跳小游戏
  12. linux环境编程apue,《UNIX环境高级编程》中apue.h的问题
  13. 20190406-楞次定律、洛伦兹力与安培力、切割磁感线过程中的能量关系
  14. JavaScript 实例:点击漫天小星星 (获取整个浏览器窗口的宽高)
  15. SpringBoot + geotools 操作 shp文件
  16. 工作态度决定了你的层次
  17. 自定义水晶报表的外观
  18. MMKV:微信团队开源的轻量级存储方案
  19. 毕业设计房屋出租研究现状
  20. Go 项目自动生成接口文档

热门文章

  1. php客户端和服务器的值传递
  2. 要开始Ubuntu之旅拉~
  3. 转载 网络上的8051 free IP core资源
  4. 使用 HTML5 webSocket API实现即时通讯的功能
  5. Element-ui中table使用row-class-name无效的锅
  6. 端口映射--PortTunnel
  7. 绝对定位实现漂浮工具条停靠在内容旁边
  8. js使用闭包循环为a标签正确添加事件
  9. SqlServer智能提示工具
  10. Scrapy 发起post请求