【NOIP2016提高A组模拟9.4】幻象

来源:互联网 发布:mac怎么找到安装包 编辑:程序博客网 时间:2024/04/29 19:11

题目

Description

phantom是一位爱思考的哲♂学家。
最近phantom得到了森の妖精的真传。在他练功的时候, 每秒他的思绪中都有一定的概率浮现出奇♂异的幻象,持续x秒的幻象将产生 的幻象值。
phantom练功发自真心,他想知道,在N秒内他期望产生的幻象值是多少。

Input

第一行包含 1 个正整数 N ,表示总时间 N 秒。
第二行包含 N 个用空格隔开的在[0,100]之间的正整数,其中第i个数a[i]表示第i秒浮现幻象的概率为百分之a[i]。

Output

1 个实数,四舍五入后保留一位小数,表示期望幻象值。

Sample Input

3
50 50 50

Sample Output

2.8

Data Constraint

对于 40%的数据 N ≤ 10
对于 60%的数据 N ≤ 100
对于 100%的数据,N ≤ 10^6
数据规模较大,请使用效率较高的读入方式。

题目の大意

这道题看的我整个人都懵逼了,完全不理解什么意思,比赛后才知道持续x秒的幻象将产生x^2的幻象值,那么就是每一秒都可能持续上一秒的幻想或者什么都不想,求期望值

比赛时の想法

题目都看不懂怎么做QAQ

正解

首先我们可以设l[i]表示第i秒幻象持续时间的期望,那么l[i]显然是等于(l[i-1]+1)*a[i]/100的。
然后我们设f[i]为第i秒的期望答案,f[i]=f[i1]+((l[i1]+1)2(l[i1])2)a[i]/100
然而我并不理解为什么是这样

贴代码

var    f,l:array[0..1000005]of extended;    a:array[0..1000005]of longint;    i,j,k,n:longint;begin    readln(n);    for i:=1 to n do read(a[i]);    readln;    for i:=1 to n do l[i]:=(l[i-1]+1)*a[i]/100;    for i:=1 to n do f[i]:=f[i-1]+(sqr(l[i-1]+1)-sqr(l[i-1]))*a[i]/100;    writeln(f[n]:0:1);end.
0 0
原创粉丝点击