D题 Talk 题解

/*
令f[i]表示第一次准备讲第i件事时的期望时间
则     f[i] = p[i-1]*(f[i-1]+1) + (1-p[i-1])*(f[i-1]+1 + f[i]-f[i-2])
           讲完i-1后 直接准备讲i   讲完i-1后 回到讲i-2 然后直到准备讲i   
                    
                    f[i-1]+1 为讲完事件i-1时的期望时间     
                    f[i]-f[i-2] 为回到i-2后 然后直到准备讲i 中间需要的时间         
                                                  
化简得    f[i] = (f[i-1]+1+(p[i-1]-1)*f[i-2]) / p[i-1];
初始状态  f[0] = f[1] = 0
目标      f[n+1]
*/
#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
double f[N],p[N];
int main(){
    int n;
    scanf("%d",&n);
    for(int i = 1; i <= n; i++) scanf("%lf",&p[i]);
    f[0] = f[1] = 0.0;
    for(int i = 2; i <= n+1; i++){
        f[i] = (f[i-1]+1+(p[i-1]-1)*f[i-2]) / p[i-1];
    }
    printf("%.3lf",f[n+1]);
    return 0;
} 

全部评论
点赞 回复 分享
发布于 2020-03-23 15:32
666
点赞 回复 分享
发布于 2020-03-25 12:59
比官方题解详细
点赞 回复 分享
发布于 2020-03-25 12:59

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
11-08 17:36
诺瓦科技_HR
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务