卧薪尝胆,厚积薄发。
Ilya and Escalator
Date: Thu Sep 27 19:45:09 CST 2018 In Category: NoCategory

Description:

有一个电梯和一列人,每时刻队首如果有人的话有 $p$ 概率进电梯, $1-p$ 不进,问最后电梯中人数的期望。
$1\leqslant n,t\leqslant 2000$

Solution:

设 $f[i][j]$ 表示到 $i$ 时刻电梯中有 $j$ 个人的概率,则最后的答案是: $$ ans=\sum_{i=0}^n f[t][i] $$ 如果 $i\ne n$ , $f[i][j]\times (1-p)\to f[i+1][j]$ , $f[i][j]\times p\to f[i+1][j+1]$
否则 $f[i][j]\to f[i+1][j]$

Code:


#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int n,t;
double p;
#define MAXN 2010
double f[MAXN][MAXN];
int main()
{
cin >> n >> p >> t;
f[0][0] = 1.0;
for(int i = 0;i <= t;++i)
{
for(int j = 0;j <= min(i,n);++j)
{
f[i + 1][j] += (1 - p) * f[i][j];
f[i + 1][min(n,j + 1)] += p * f[i][j];
}
}
double ans = 0.0;
for(int i = 1;i <= min(t,n);++i)
{
ans += f[t][i] * i;
}
printf("%.8lf\n",ans);
return 0;
}
Copyright © 2020 wjh15101051
ღゝ◡╹)ノ♡