您的位置:首页 > 其它

【NOIP模拟】幻象

2016-09-04 14:52 225 查看

Description

phantom是一位爱思考的哲♂学家。

最近phantom得到了森の妖精的真传。在他练功的时候, 每秒他的思绪中都有一定的概率浮现出奇♂异的幻象,持续x秒的幻象将产生(空格) 的幻象值。

phantom练功发自真心,他想知道,在N秒内他期望产生的幻象值是多少。

Solution

等我比赛完之后,我们才知道(空格)是x2,所以比赛的时候一直都没有做。

ljj等人竟然知道而不告诉我们,真是太自私了。

题意还有一个讲的不清楚的地方就是,幻象值一定要从1开始连续。

那么就很简单了。

我们设l[i]表示1到i的期望值l[i]=(l[i]+1)∗a[i]

我们设f[i]表示到第i个时间点的幻象期望值,f[i]=f[i−1]+((l[i−1]+1)2−l[i−1]2)∗a[i]

为什么呢?到了第i个时间点,有两种情况,一个是持续不下去,另一个是持续下去,用持续下去的期望减去持续不下去的期望就可以了。

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int maxn=1000007;
int i,j,k,t,n,m;
double l[maxn],f[maxn],a[maxn];
int main(){
scanf("%d",&n);
fo(i,1,n){
scanf("%lf",&a[i]);
a[i]=a[i]/100;
}
fo(i,1,n){
l[i]=(l[i-1]+1)*a[i];
f[i]=f[i-1]+(l[i-1]*2+1)*a[i];
}
printf("%.1lf\n",f
);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: