题目
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[i−1]+((l[i−1]+1)2−(l[i−1])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.