• 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)表示直接把x染黑的概率
    //那么P(x)=1/dep[x]
    //所以我们要算的就是sigma(1/dep[x])
    
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    const int N=1e5+5;
    
    int n;
    int head[N],num_edge;
    struct Edge
    {
        int v,nxt;
    }edge[N<<1];
    
    inline void add_edge(int u,int v)
    {
        edge[++num_edge].v=v;
        edge[num_edge].nxt=head[u];
        head[u]=num_edge;
    }
    
    int dep[N];
    void dfs(int u,int fa)
    {
        for(int i=head[u],v;i;i=edge[i].nxt)
        {
            v=edge[i].v;
            if(v==fa)
                continue;
            dep[v]=dep[u]+1;
            dfs(v,u);
        }
    }
    
    double ans;
    int main()
    {
        scanf("%d",&n);
        for(int i=1,u,v;i<n;++i)
        {
            scanf("%d%d",&u,&v);
            add_edge(u,v);
            add_edge(v,u);
        }
        dep[1]=1;
        dfs(1,0);
        for(int i=1;i<=n;++i)
            ans+=1.0/dep[i];
        printf("%.7lf",ans);
        return 0;
    }
  • 相关阅读:
    桶排序
    基数排序
    计数排序
    归并排序
    快速排序
    优先级队列-堆实现
    堆排序
    红黑树
    【转】二叉树
    ubuntu 16.04 mysql 相关
  • 原文地址:https://www.cnblogs.com/lovewhy/p/9251049.html
Copyright © 2020-2023  润新知