题意:

有n个人在电梯外等待,每隔一秒会有p的概率有一人进入电梯,问t秒后电梯中人数的期望

题解:

概率dp
但是接触概率的题很少,对于求期望自己一无所知
dp[i][j]表示i秒后电梯中有j人的概率
j=0时,该秒无人进入,dp[i][j]+=dp[i-1][j] * (1-p)
0<j<n时,dp[i][j]+=dp[i-1][j-1] * p+dp[i-1][j] * (1-p)
j=n时,dp[i][j]+=dp[i-1][j-1] * p+dp[i-1][j]
ans=
额。。dp本来就不熟,概率更是不会。。算了抓紧学吧

代码:

#include <bits\stdc++.h>
using namespace std;
const int N = 2001;
double dp[N][N];

int main() {
    int n, t;
    double p;
    cin >> n >> p >> t;
    dp[0][0] = 1;
    for(int i = 1 ; i <= t ; i++){
        for(int j = 0 ; j <= n ; j++){
            dp[i][j] += (j == n ? dp[i-1][j] : dp[i-1][j]*(1-p));
            if(j-1 >= 0){
                dp[i][j] += dp[i-1][j-1]*p;
            }
        }
    }
    double ans = 0;
    for(int i = 1 ; i <= n ; i++){
        ans += dp[t][i]*i;
    }
    cout << setiosflags(ios::fixed) << setprecision(6) << ans << endl;
    return 0;
}