CF280C Game on Tree (期望)

CF280C Game on Tree

期望的确是个玄学(原因可能是我太弱了)
还是不太会呢.
题意:期望多少次操作可以将树全部染黑
话说这个题求概率呢.
因为期望的线性性质,一棵树可以分解为多棵子树,而子树分解的最终状态就是点,所以我们可以计算每个点的期望操作次数再求和,这里的每个点的操作次数是指在这个点上操作。
因为在操作之前不能被染黑,并且必须要染黑。
所以期望次数为\(\sum_{i=1}^n1/dep[i]\)

#include <iostream>
#include <cstdio>
const int maxN = 1e5 + 7;

int dep[maxN];
struct Node {
    int v,nex;
}Map[maxN << 1];
int head[maxN],num;
int n;

void add_Node(int u,int v) {
    Map[++ num] = (Node){v,head[u]};
    head[u] = num;
    return ;
}

void dfs(int u,int fa) {
    dep[u] = dep[fa] + 1;
    for(int i = head[u];i;i = Map[i].nex) {
        int v = Map[i].v;
        if(v != fa) {
            dfs(v,u);
        }
    }
}

int main() {
    scanf("%d",&n);
    for(int i = 1,u,v;i < n;++ i)  {
        scanf("%d%d",&u,&v);
        add_Node(u,v);
        add_Node(v,u);
    }
    dfs(1,1);
    double ans = 0;
    for(int i = 1;i <= n;++ i)
        ans += 1.0 / dep[i];
    printf("%lf",ans);
    return 0;
}

原文地址:https://www.cnblogs.com/tpgzy/p/9769336.html

时间: 2024-10-28 14:36:29

CF280C Game on Tree (期望)的相关文章

CF280C Game on Tree

题面:https://www.luogu.org/problemnew/show/CF280C //Pro:CF280C Game on Tree //因为树全被染成黑色了,所以根节点一定被染了 //那么就是求从x染到根节点的操作数的期望 //考虑x被染黑的情况 //1.根节点(x的最高祖先)被染黑 //2.根节点的某个儿子(x的次高祖先)被染黑 //...... //dep[x]-1.x的父亲被染黑 //dep[x]. x被染黑 //所以节点x被染黑的可能情况有dep[x]种 //用P(x)表

CF280C Game on tree(期望dp)

这道题算是真正意义上人生第一道期望的题? 题目大意: 给定一个n个点的,以1号点为根的树,每一次可以将一个点和它的子树全部染黑,求染黑所有点的期望 QwQ说实话,我对期望这种东西,一点也不理解... 根据期望的线性性,计算出每个点比选择的期望次数,然后直接相加 所以得出\(E(x) = \frac{1}{dep[x]}\) 这里之所以是$ \frac{1}{dep[x]}$是因为我们求的期望是每个点把自己及自己子树染黑的概率(而不是靠祖先) 或者换种说法: 整棵树的期望操作次数太大,难以找到方法

CF 500D New Year Santa Network tree 期望 好题

New Year is coming in Tree World! In this world, as the name implies, there are n cities connected by n - 1 roads, and for any two distinct cities there always exists a path between them. The cities are numbered by integers from 1 to n, and the roads

Codeforces.280C.Game on Tree(期望)

题目链接 参考:浅谈期望的线性性(可加性) Codeforces 280C Game on Tree 概率dp 树上随机删子树 求删完次数的期望(这个的前半部分分析并没有看..) \(Description\) 给你一棵有\(n\)个白点的有根树,每次随机选择一个点,将它和它的子树中所有点染黑. 问期望操作多少次后所有点都被染黑? \(Solution\) 期望好玄啊..(好吧是我太弱) 因为概率具有可加性,一棵树可以分解为多棵子树,而子树分解的最终状态就是点,所以我们可以计算每个点的期望操作次

概率 &amp;&amp; 期望 DP 入门

~待填坑~ 先来了解一点儿概率和期望的基本知识: 样本空间.事件和概率 样本空间:样本空间 $S$ 是一个集合,它的元素成为基本事件.样本空间的一个子集被称为事件,根据定义,所有基本事件互斥. 概率:如果有一种事件到实数的映射满足 $P()$,满足: 1.对任何事件,$P(A)>=0$ 2.$P(S)=1$ 3.对两个互斥事件,$P(A\cap B)=P(A)+P(B)$ 则可称$P(A)$为事件$A$的概率.上述三条成为概率公理. 事件的关系与运算 包含:对于事件$A$与事件$B$,如果事件$

[CSP校内集训]tree(期望DP)

题意 给一颗树,从1节点出发,走每条边的概率相同且耗时为1,求每个点第一次被遍历到的期望时间(\(t_1=1\)) 思路 在树上只有两种移动方式:从儿子到父亲,从父亲到儿子 假设从\(rt\)走到\(v\)的期望代价为\(dow_i\),从\(i\)走到\(rt\)的期望代价为\(val_i\) 假设从\(rt\)转移到\(v\),\(rt\)的度数为\(k\),\(rt\)的父亲为\(fa\),则: \[dow_v = \frac{1}{k} + \sum_{son}^{son\neq v}

Codeforces 280C Game on Tree 概率dp 树上随机删子树 求删完次数的期望

题目链接:点击打开链接 题意:给定n个点的一棵树 每次操作随机选任意一个点,把这个点和这个点的子树删去. 当把所有点删去则停止. 问操作次数的期望. 题解引用自:点击打开链接 删除的规则拥有一个非常好的性质:对于任意(u,v),选择u会导致删除v,那么选择u会删除的点集合一定包含选择了v以后会删除的点集合. 我们考虑换一种方式来实现删除的过程: 产生一个随机的1-n的排列P,从前往后依次尝试删除这些点,如果当前点已经被删除,就什么都不干,否则把次数+1,删除这个点以及他的所有后代. 通过这种方式

POJChallengeRound2 Tree 【数学期望】

题目分析: 我们令$G(x)$表示前$x$个点的平均深度,$F(x)$表示第$x$个点的期望深度. 有$F(x) = G(x-1)+1$,$G(x) = G(x-1)+\frac{1}{x}$ 所以答案相当于一个调和级数和的前缀和,我们对小于1e6的暴力处理,大于1e6的利用欧拉常数做. 代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const double euler = 0.577215664901532860606512

Maven类包冲突终极三大解决技巧 mvn dependency:tree

Maven对于新手来说是<步步惊心>,因为它包罗万象,博大精深,因为当你初来乍到时,你就像一个进入森林的陌生访客一样迷茫. Maven对于老手来说是<真爱配方>,因为它无所不能,利如刀锋,使用Maven做开发,如饮美酒如悦美人. Maven对于新手来说,最痛苦的一件事莫过于包之间的冲突,由于Maven的依赖传递性,当你引入一个依赖类时,其身后的依赖类也一起如过江之鲫纷至沓来了. 举例 A依赖于B及C,而B又依赖于X.Y,而C依赖于X.M,则A除引B及C的依赖包下,还会引入X,Y,M