• 概率期望——cf round362 div1


    给定n个数,求i的位置的期望

    那么反向考虑,j!=i排在i前面的概率是0.5,那么对i的位置的期望贡献就是1*0.5

    这题就是拓展应用一下

    #include<bits/stdc++.h>
    using namespace std;
    
    const int maxn = 200005;
    const double esp = 1e-7;
    
    vector<int>G[maxn];
    int n,size[maxn];
    double E[maxn];
    
    void dfs1(int u,int pre){
        size[u]=1;
        for(int i=0;i<G[u].size();i++){
            int v=G[u][i];
            if(v==pre)continue;
            dfs1(v,u);
            size[u]+=size[v];
        }
    }
    
    void dfs2(int u,int pre){
        if(u==1)E[u]=1.0;
        for(int i=0;i<G[u].size();i++){
            int v=G[u][i];
            if(v==pre)continue;
            E[v]=1.0*(size[u]-size[v]-1)/2+E[u]+1;
            dfs2(v,u);
        }
    }
    
    int main(){
        cin>>n;
        for(int i=2;i<=n;i++){
            int fa;
            cin>>fa;
            G[fa].push_back(i);
            G[i].push_back(fa);
        }
        dfs1(1,1);
        dfs2(1,1);    
        for(int i=1;i<=n;i++)
            cout<<E[i]<<" ";
    }
  • 相关阅读:
    Java静态代理学习
    Java反射学习三
    Java反射学习二
    Java反射学习一
    Java反射学习四
    linux下vim命令详解
    linux安装jdk
    转 知道这20个正则表达式,能让你少写1,000行代码
    excel函数2
    excel函数
  • 原文地址:https://www.cnblogs.com/zsben991126/p/11068459.html
Copyright © 2020-2023  润新知