zoukankan      html  css  js  c++  java
  • CF 518D(概率dp)

    传送门:Ilya and Escalator

    题意:有n个人排队进车厢,每秒只能进一个人,而且第1个人进了后面的人才能进,第一个人每秒进入车厢的概率为p,不进的概率为1-p,求t秒后进入车厢总人数的数学期望。

    分析:设dp[i][j]表示第i秒进了j个人的概率,则:

    dp[i][j]=dp[i-1][j]*(1-p)+dp[i-1][j-1]*p.

    注意边界限制:

    当j=0时:dp[i][j]=dp[i-1][j]*(1-p)

    当j=n时:dp[i][j]=dp[i-1][j]+dp[i-1][j-1]*p.因为如果第i-1秒都进入n个人了,第i秒必定也已经进入n个人了。

    #pragma comment(linker,"/STACK:1024000000,1024000000")
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <cmath>
    #include <limits.h>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <cstdlib>
    #include <stack>
    #include <vector>
    #include <set>
    #include <map>
    #define LL long long
    #define mod 1000000007
    #define inf 0x3f3f3f3f
    #define eps 1e-6
    #define N 2010
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define PII pair<int,int>
    using namespace std;
    inline LL read()
    {
        char ch=getchar();LL x=0,f=1;
        while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
        while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    double dp[N][N];
    int main()
    {
        int n,t;
        double p;
        while(scanf("%d%lf%d",&n,&p,&t)>0)
        {
            dp[0][0]=1;
            for(int i=1;i<=t;i++)
            {
                for(int j=0;j<=n;j++)
                    if(j>0&&j<n)dp[i][j]=dp[i-1][j]*(1-p)+dp[i-1][j-1]*p;
                    else if(j==n)dp[i][j]=dp[i-1][j]+dp[i-1][j-1]*p;
                    else dp[i][j]=dp[i-1][j]*(1-p);
            }
            double ans=0;
            for(int i=0;i<=n;i++)ans+=dp[t][i]*i;
            printf("%.10lf
    ",ans);
        }
    }
    View Code
  • 相关阅读:
    www.verycd.com
    HDU-5281
    HDU-5280
    UVALive 6426
    hihocoder 1178 : 计数
    hihocoder 1177 : 顺子
    HDU-5272
    Tomcat 部署项目的三种方法
    Oracle数据库PLSQL的中文乱码显示全是问号
    ORACLE的sign函数和DECODE函数
  • 原文地址:https://www.cnblogs.com/lienus/p/4299300.html
Copyright © 2011-2022 走看看