Codeforces123E. Maze【树形dp】【概率dp】【证明题】
题目大意
一棵树,上面的每个点都有一定概率成为起点和终点
从起点出发,随机游走,并按照下列规则统计count:
DFS(x)
if x == exit vertex then
finish search
flag[x] <- TRUE
random shuffle the vertices' order in V(x) // here all permutations have equal probability to be chosen
for i <- 1 to length[V] do
if flag[V[i]] = FALSE then
count++;
DFS(y);
count++;
求count的期望
思路
首先来证明一个东西:
对于每个节点u,如果这个节点是终点,那么他的贡献是
\]
\(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;
}
Codeforces123E. Maze【树形dp】【概率dp】【证明题】的更多相关文章
- SGU 495 Kids and Prizes:期望dp / 概率dp / 推公式
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=495 题意: 有n个礼物盒,m个人. 最开始每个礼物盒中都有一个礼物. m个人依次随 ...
- BZOJ3566 [SHOI2014]概率充电器 (树形DP&概率DP)
3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电 ...
- [LOJ3124][CTS2019|CTSC2019]氪金手游:树形DP+概率DP+容斥原理
分析 首先容易得出这样一个事实,在若干物品中最先被选出的是编号为\(i\)的物品的概率为\(\frac{W_i}{\sum_{j=1}^{cnt}W_j}\). 假设树是一棵外向树,即父亲比儿子先选( ...
- 初涉期望dp/概率dp【在更】
大致可以分为两种:爆精度:小数取模.
- bzoj 1076: [SCOI2008]奖励关【状压dp+概率dp】
设f[i][s]为前i步,选的礼物集合为s的方案数,然而并不会转移-- 看了hzwer的blog,发现要倒着转移,然后答案就是f[1][0] 妙啊 #include<iostream> # ...
- [NOIP2016 D1T3]换教室 【floyd+概率dp】
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq i \leq n1≤ ...
- 13年山东省赛 The number of steps(概率dp水题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud The number of steps Time Limit: 1 Sec Me ...
- 【BZOJ 2878】 2878: [Noi2012]迷失游乐园 (环套树、树形概率DP)
2878: [Noi2012]迷失游乐园 Description 放假了,小Z觉得呆在家里特别无聊,于是决定一个人去游乐园玩.进入游乐园后,小Z看了看游乐园的地图,发现可以将游乐园抽象成有n个景点.m ...
- A Dangerous Maze (II) LightOJ - 1395(概率dp)
A Dangerous Maze (II) LightOJ - 1395(概率dp) 这题是Light Oj 1027的加强版,1027那道是无记忆的. 题意: 有n扇门,每次你可以选择其中一扇.xi ...
随机推荐
- 手把手教你开发jquery插件
I have said that i dislike jQuery UI’s unified API, so i want to get the instance of the component a ...
- 超短reads(primer、barcode、UMI、index等)比对方法
二代reads最短都有50bp,所以大家常用的比对工具都是不支持50bp以下的reads的比对的. 但是,在实际中,我们确实又有比对super short reads的需求. So,我找到了如下方法来 ...
- Shiny+SQLite打造轻量级网页应用
参考: R语言核心技能:交互式展示Shiny 中文 R语言用Shiny包快速搭建交互网页应用 R七种武器之交互化展示包shiny 用R的shiny包写一个基因的ID转换小程序 https://gi ...
- hdu-1907-反nim博弈
John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- zzuli 1484 继续双线
1484: 探 寻 宝 藏 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 94 Solved: 52 SubmitStatusWeb Board De ...
- Application 类
Application 类具有用于启动和停止应用程序和线程以及处理 Windows 消息的方法,如下所示: Run 在当前线程上启动应用程序消息循环,并可以选择使某窗体可见. Exit 或 ExitT ...
- 规格化设计-----JSF(第三次博客作业)
从20世纪60年代开始,就存在着许多不同的形式规格说明语言和软件开发方法.在形式规格说明领域一些最主要的发展过程列举如下: 1969-1972 C.A.R Hoare撰写了"计算机编程的公理 ...
- POJ 3481 splay模板
最后撸一发splay. 之前用treap撸的,现在splay也找到感觉了,果然不同凡响,两者之间差别与精妙之处各有其精髓! 真心赞一个! POJ平衡树的题目还是比较少,只能挑之前做过的捏一捏.但是收获 ...
- jQuery旋转插件—rotate-摘自网友
jQuery旋转插件—rotate 时间:2013年01月03日作者:愚人码头查看次数:5,660 views评论次数:6条评论 网上发现一个很有意思的jQuery旋转插件,支持Internet Ex ...
- IOS-整体框架类图
Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助. 1.Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境. 是什么因素使一个程序成为Co ...