zoukankan      html  css  js  c++  java
  • P4316 绿豆蛙的归宿

    传送门

    计算长度期望嘛

    期望长度 = 长度 * 走这条边的概率

    概率很好求

    按照拓扑序跑一下DP就好了

    设 s [ i ] 为走到这的概率,j 为 i 的后继节点,k为 i 的后继节点总数

    s [ j ] += s[ i ] / k

    走边(i,j)的概率显然就是 k

    就是期望DP的入门题...

    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<cstdio>
    #include<queue>
    #include<vector>
    using namespace std;
    const int N=100007;
    vector <int> v[N],g[N];
    int n,m;
    double s[N],ans;
    queue <int> q;
    bool vis[N];
    int main()
    {
        int a,b,c;
        cin>>n>>m;
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&a,&b,&c);
            v[a].push_back(b);
            g[a].push_back(c);
        }
        q.push(1); s[1]=1;
        while(!q.empty())
        {
            int x=q.front(); q.pop();
            int len=v[x].size();
            double k=s[x]/len;
            //cout<<x<<" "<<len<<" "<<s[x]<<" "<<k<<endl;
            for(int i=0;i<len;i++)
            {
                int u=v[x][i];
                //cout<<u<<" ";
                s[u]+=k; ans=(ans+k*g[x][i]);
                //cout<<s[u]<<" "<<ans<<endl;
                if(!vis[u]) q.push(u),vis[u]=1;
            }
        }
        printf("%.2lf",ans);
        return 0;
    }
  • 相关阅读:
    TextView 字数限制
    关于一个软件ipa包的其他图片资源
    查看一个软件ipa包的内容
    不断学习的博客
    高级iOS面试题
    CocoaPod出现-bash: pod: command not found 解决办法
    链表清空
    蛋疼的并查集
    再卖菜
    乒乓球男双输了
  • 原文地址:https://www.cnblogs.com/LLTYYC/p/9588710.html
Copyright © 2011-2022 走看看