CF235B.Let's Play Osu!
普及+/提高
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You're playing a game called Osu! Here's a simplified version of it. There are n clicks in a game. For each click there are two outcomes: correct or bad. Let us denote correct as "O", bad as "X", then the whole play can be encoded as a sequence of n characters "O" and "X".
Using the play sequence you can calculate the score for the play as follows: for every maximal consecutive "O"s block, add the square of its length (the number of characters "O") to the score. For example, if your play can be encoded as "OOXOOOXXOO", then there's three maximal consecutive "O"s block "OO", "OOO", "OO", so your score will be 22 + 32 + 22 = 17. If there are no correct clicks in a play then the score for the play equals to 0.
You know that the probability to click the i-th (1 ≤ i ≤ n) click correctly is p__i. In other words, the i-th character in the play sequence has p__i probability to be "O", 1 - p__i to be "X". You task is to calculate the expected score for your play.
你正在玩一款名为 Osu! 的游戏。以下是该游戏的一个简化版本:一局游戏中共有 n 次点击。每次点击有两种结果:正确(correct)或错误(bad)。我们用 "O" 表示正确,"X" 表示错误,则整局游戏可编码为一个由 n 个字符 "O" 和 "X" 组成的序列。
根据该序列,可按如下方式计算得分:对每个极大连续的 "O" 子串(即不能再向左右扩展的连续 "O" 段),将其长度(即其中 "O" 的个数)的平方加到总分中。例如,若你的游戏序列为 "OOXOOOXXOO",则其中存在三个极大连续 "O" 子串:"OO"、"OOO" 和 "OO",因此得分为 22+32+22=17。若整局游戏中没有任何一次正确点击,则得分为 0。
已知第 i 次点击(1≤i≤n)正确的概率为 pi。换言之,序列中第 i 个字符以概率 pi 为 "O",以概率 1−pi 为 "X"。你的任务是计算该局游戏的期望得分。
输入格式
The first line contains an integer n (1 ≤ n ≤ 105) — the number of clicks. The second line contains n space-separated real numbers _p_1, _p_2, ..., p__n (0 ≤ p__i ≤ 1).
There will be at most six digits after the decimal point in the given p__i.
第一行包含一个整数 n(1≤n≤105)—— 点击次数。
第二行包含 n 个由空格分隔的实数 p1,p2,...,pn(0≤pi≤1)。
给定的 pi 小数点后最多有六位数字。
输出格式
Print a single real number — the expected score for your play. Your answer will be considered correct if its absolute or relative error does not exceed 10 - 6.
输出一个实数——你操作的期望得分。若你的答案的绝对或相对误差不超过 10−6,则视为正确。
输入输出样例
输入#1
3 0.5 0.5 0.5
输出#1
2.750000000000000
输入#2
4 0.7 0.2 0.1 0.9
输出#2
2.489200000000000
输入#3
5 1 1 1 1 1
输出#3
25.000000000000000
说明/提示
For the first example. There are 8 possible outcomes. Each has a probability of 0.125.
- "OOO" → 32 = 9;
- "OOX" → 22 = 4;
- "OXO" → 12 + 12 = 2;
- "OXX" → 12 = 1;
- "XOO" → 22 = 4;
- "XOX" → 12 = 1;
- "XXO" → 12 = 1;
- "XXX" → 0.
So the expected score is 
对于第一个例子,共有 8 种可能的结果,每种结果出现的概率均为 0.125。
- “OOO” → 32=9;
- “OOX” → 22=4;
- “OXO” → 12+12=2;
- “OXX” → 12=1;
- “XOO” → 22=4;
- “XOX” → 12=1;
- “XXO” → 12=1;
- “XXX” → 0。
因此,期望得分为 
输入解题思路,AI测评打分。不知道怎么写?