1 条题解

  • 0
    @ 2023-5-26 11:39:28

    题意简述

    • nn 个人排成一列。每秒有 pp 的概率,队伍的第一个人走上电梯。

    • tt 秒后已经走上电梯人数的期望值。

    • 1n,t20001\leq n,t\leq 20000p10\leq p\leq 1

    题目分析

    动态规划,定义状态 fi,jf_{i,j} 表示前 ii 个人 jj 秒内走上电梯人数的期望值。

    分类讨论第 jj 秒第一个人是否上电梯:

    • 对于 pp 的概率,第一个人上了电梯,贡献为 (fi1,j1+1)×p(f_{i-1,j-1}+1)\times p

    • 对于 1p1-p 的概率,第一个人没有走上电梯,贡献为 fi,j1×(1p)f_{i,j-1}\times(1-p)

    最终答案为 fn,tf_{n,t},时间复杂度 Θ(nt)\Theta(nt)

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int n,t; double p,f[2001][2001];
    //f[i][j]: 前i个人j秒期望人数 
    int main(){
    	scanf("%d%lf%d",&n,&p,&t);
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=t;j++)
    			f[i][j]=(f[i-1][j-1]+1)*p+f[i][j-1]*(1-p);
    	printf("%.8lf\n",f[n][t]);
        return 0;
    }
    
    • 1

    信息

    ID
    4869
    时间
    2000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    9
    已通过
    5
    上传者