现在的位置: 首页 > 综合 > 正文

Codeforces 235B. Let’s Play Osu!

2017年11月24日 ⁄ 综合 ⁄ 共 2596字 ⁄ 字号 评论关闭

235B - Let's Play Osu!

Let us take a deep look in how this score is calculated. for a n long 'O' block, they contribute n2 to
answer.

Let us reformat this problem a bit and consider the following problem.

For each two 'O' pair which is no 'X' between them, they add 2 to score.

For each 'O',it add 1 to score.

We can see that these two problem are exact the same.

Proof:

for a n long 'O' block,there is Cn2 pair
of 'O' in it and n 'O' in it.

2Cn2 + n = n2.

So for each event(i,j) (which means s[i] and s[j] are 'O', and there's no 'X' between them).

If event(i,j) happen, it add 2 to the score.

So we only sum up the probability of all events and multiply them by 2.

Then our task become how to calculate the sum of all event(i,j).

We can see event(i,j) is simpliy .

Then we denote dp(j) as sum of all event(i,j) and i<j.

so dp(0)=0 and dp(j)=(dp(j-1)+pj - 1)*pj


B. Let's Play Osu!
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

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 pi.
In other words, the i-th character in the play sequence has piprobability
to be "O", 1 - pi to
be "X". You task is to calculate the expected score for your play.

Input

The first line contains an integer n (1 ≤ n ≤ 105)
— the number of clicks. The second line contains n space-separated real numbersp1, p2, ..., pn (0 ≤ pi ≤ 1).

There will be at most six digits after the decimal point in the given pi.

Output

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.

Sample test(s)
input
3
0.5 0.5 0.5
output
2.750000000000000
input
4
0.7 0.2 0.1 0.9
output
2.489200000000000
input
5
1 1 1 1 1
output
25.000000000000000
Note

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 

/**
 * Created by ckboss on 14-9-3.
 */
import java.util.*;

public class N {
    public static void main(String[] args){
       Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        double ans=0,pre=0,now=0;
        for(int i=1;i<=n;i++)
        {
            now=in.nextDouble();
            pre=pre*now;
            ans+=2*pre+now;
            pre=pre+now;
        }
        System.out.println(ans);
    }
}

抱歉!评论已关闭.