题链:
http://codeforces.com/problemset/problem/518/D
题解:
期望dp。
定义dp[t][i]表示在第t秒开始之前,已经有了i个人在电梯上,之后期望能有多少人上电梯。
转移:
dp[t][i]=(1-P)*dp[t+1][i]+P*(dp[t+1][i+1]+1)
代码:
#include<bits/stdc++.h> #define MAXN 2005 using namespace std; int N,T; double P,dp[MAXN][MAXN]; int main(){ ios::sync_with_stdio(0); cin>>N>>P>>T; for(int t=T;t>=1;t--) for(int i=0;i<N;i++) dp[t][i]=(1-P)*dp[t+1][i]+P*(dp[t+1][i+1]+1); cout<<fixed<<setprecision(6)<<dp[1][0]<<endl; return 0; }