zoukankan      html  css  js  c++  java
  • Luogu_P4316 绿豆蛙的归宿 期望DP

    Luogu_P4316 绿豆蛙的归宿

    期望DP


    题面
    挺简单的概率期望DP
    (f[i])(i)(n)的期望路径的长度
    答案就是(f[1])
    (f[x]=(dfrac{1}{d[x]})*∑(f[y]+dis))
    (d)是度数,(y)(x)的儿子,(dis)就是距离
    这个式子比较显然
    但是这个是从后往前推的
    需要反着建图然后再通过拓扑排序DP


    代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=100010;
    int n,m,head[maxn<<1],tot,d[maxn],in[maxn];
    double f[maxn];
    struct node{
        int nxt,to,dis;
        #define nxt(x) e[x].nxt
        #define to(x) e[x].to
        #define dis(x) e[x].dis
    }e[maxn<<2];
    inline void add(int fr,int to,int di){
        to(++tot)=to;dis(tot)=di;nxt(tot)=head[fr];head[fr]=tot;
    }
    inline void tops(){
        queue<int> q;
        q.push(n);
        while(q.size()){
            int x=q.front();q.pop();
            for(int i=head[x];i;i=nxt(i)){
                int y=to(i);
                f[y]+=(f[x]+(double)dis(i))/d[y];
                if(!(--in[y])) q.push(y);
            }
        }
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++){
            int x,y,z;scanf("%d%d%d",&x,&y,&z);add(y,x,z);d[x]++,in[x]++;
        }
        tops();
        printf("%.2lf
    ",f[1]);
        return 0;
    }
    
  • 相关阅读:
    poj1019
    poj1017
    .net面试题及答案二
    .net面试题集锦一
    .net面试题目三
    ADO.NET中的五个主要对象
    ASP.NET页面生命周期描述(转)
    学习网址不断更新。。。
    Html5新标签解释及用法
    HTML5 Shiv – 让该死的IE系列支持HTML5吧
  • 原文地址:https://www.cnblogs.com/ChrisKKK/p/11617313.html
Copyright © 2011-2022 走看看