这题目是算概率并不难 想了一会就有结果了, 代码是对的,可是因为用cout 格式要自己控制的 ,在WA了之后没有想到,也是在比赛最后一点时间了,比赛结束时候就无语了 不过也好给我个教训吧
题目连接 :http://codeforces.com/contest/518/problem/D
题意:有一个电梯 , 门口有N个人排队依次进入 , 每个人进入的概率为P ,在每一秒排在队伍第一位的人可以进入或者不进入,不进入后这一秒就过去了,而且排在队伍后面的人必须等自己前面的人都进入电梯后才能进入 ,问我们在t秒内进去电梯人的期望。
思路: 开一个数组pp[i] 表示当前 t 秒时的前一秒进入电梯总人数(i)的概率,然后从第一秒开始 DP每一秒进入电梯人数的状态,
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<set>
using namespace std;
int main()
{
double pp[2005] = {0}, p , ans = 0;
int n , t;
cin >> n >> p >> t;
pp[0] = 1;
if(t <= n)
{
for(int i = 1 ; i <= t ; i++)
{
for(int j = i - 1 ; j > -1 ; j--)
{
pp[j+1] += pp[j] * p;
ans += pp[j] * p;
pp[j] -= pp[j] * p;
}
}
}
else
{
for(int i = 1 ; i <= t ; i++)
{
for(int j = min(i - 1 , n-1) ; j > -1 ; j--)
{
pp[j+1] += pp[j] * p;
ans += pp[j] * p;
pp[j] -= pp[j] * p;
}
}
}
printf("%lf\n", ans);
return 0;
}