这道题算是真正意义上人生第一道期望的题?

题目大意:

给定一个n个点的,以1号点为根的树,每一次可以将一个点和它的子树全部染黑,求染黑所有点的期望

QwQ说实话,我对期望这种东西,一点也不理解。。。

根据期望的线性性,计算出每个点比选择的期望次数,然后直接相加

所以得出\(E(x) = \frac{1}{dep[x]}\)

这里之所以是$ \frac{1}{dep[x]}$是因为我们求的期望是每个点把自己及自己子树染黑的概率(而不是靠祖先)

或者换种说法:

整棵树的期望操作次数太大,难以找到方法。这时我们需要突破口。
该如何将大问题转化为小问题呢?我们发现,一棵树是可以分成好几颗子树的,而子树分解的最终状态就是所有的点。那么,我们是不是可以计算出 每个点被染黑的期望操作次数,然后相加就是整棵树的了?答案是当然可以。
这里需要注意的是,对于每个点的操作次数是指的在这个点上的操作。对于每一个点,如果其祖先被染黑了,它自己也会被顺带染黑,而这个对于该点来说是没有进行操作的。所以得出对于点x:\(E(x) = \frac{1}{dep[x]}\)

直接上代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>using namespace std;inline int read()
{int x=0,f=1;char ch=getchar();while (!isdigit(ch)) {if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;
}const int maxn = 1e5+1e2;
const int maxm = 2e5+1e2;int point[maxn],nxt[maxm],to[maxm];
double dep[maxn];
int vis[maxn];
int n,m;
int cnt;void addedge(int x,int y)
{nxt[++cnt]=point[x];to[cnt]=y;point[x]=cnt;
}void dfs(int x,double dp)
{dep[x]=dp;vis[x]=1;for (int i=point[x];i;i=nxt[i]){int p = to[i];if (!vis[p]){dfs(p,dp+1.0);}}
}double ans=0;int main()
{scanf("%d",&n);for (int i=1;i<n;i++){int x,y;x=read(),y=read();addedge(x,y);addedge(y,x);}//cout<<"gg"<<endl;dep[1]=1;dfs(1,1.0);for (int i=1;i<=n;i++){ans=ans+1.0/dep[i]; }printf("%.8lf",ans);return 0;
}

转载于:https://www.cnblogs.com/yimmortal/p/10160822.html

CF280C Game on tree(期望dp)相关推荐

  1. luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...

  2. [SCOI2008]奖励关(期望dp)

    你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...

  3. 【bzoj4318】OSU! 期望dp

    题目描述 osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...

  4. 【loj6342】跳一跳 期望dp

    题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...

  5. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

  6. Luogu P3251 [JLOI2012]时间流逝 期望dp

    题面 题面 题解 期望\(dp\)好题! 今年\(ZJOI\)有讲过这题... 首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力 ...

  7. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra

    题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择 ...

  8. 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

    [题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...

  9. string (KMP+期望DP)

    Time Limit: 1000 ms   Memory Limit: 256 MB Description  给定一个由且仅由字符 'H' , 'T' 构成的字符串$S$. 给定一个最初为空的字符串 ...

  10. 概率期望题(期望 DP)做题记录

    概率期望题(期望 DP)做题记录 P3830 [SHOI2012]随机树 难点在于第二问:生成树的期望深度. 不 wei zhuo 捏,设 \(dp_{i,j}\) 表示已经有了 \(i\) 个叶子结 ...

最新文章

  1. 返回一个二维整数数组中的最大的子数组和
  2. java hashmap存取效率_HashMap为什么存取效率那么高?
  3. LeetCode - Reorder List
  4. 牛逼哄哄的 RPC 框架,底层到底什么原理?
  5. slz-JDK1.8的环境变量配置
  6. 乘积最大子数组—leedcode152
  7. 年后来广州第一天,写篇水文
  8. Qt 入门 ---- 如何在程序窗口显示图片?
  9. kindeditor项目集成
  10. [有限元] Ansys Workbench 19.2 平面应力问题分析示例
  11. 当systeminfo不能显示系统启动时间了--用命令行修复一下
  12. php coder pro 调试,为PHP开发者准备的12个调试工具,php开发者调试工具_PHP教程
  13. Flink的容错机制
  14. mybatis中的mapper代理的应用
  15. 拔光所有头发编写的双色球系统,完整代码详解,用的全是Java基础的知识,另外,我这个里面特意留了一个BUG,谁要是能找出来,我就去他评论区下面唱征服!!
  16. 【U8】出纳管理制单锁定
  17. html九宫格拼图怎么做,九宫格拼图制作方法分享,只用PPT就能搞定
  18. SQL在执行JOIN ON时,到底发生了什么?
  19. Android使用Volley框架显示“Cleartext HTTP traffic to XXX not permitted”的解决方法
  20. 19、生鲜电商平台-安全设计与架构

热门文章

  1. 3月20日 表单
  2. 转载:eclipse 搭建SSH项目(第二篇,有具体的项目例子)
  3. windows server 2012无法安装NET.framework3.5解决方法
  4. vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.psl,因为在此系统上禁止运行脚本
  5. CSS3 blur滤镜实现
  6. java匿名类 - new接口
  7. 运行elasticsearch时报错:could not find java; set JAVA_HOME or ensure java is in PATH
  8. protobuffer中string和bytes类型
  9. 修改表字段属性_设置对象表字段的有效性规则
  10. mysql5.5.50安装包_影视混剪每天收入400多??总结了50多款软件