Codeforces B Let's Play Osu!

Posted OldJang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces B Let's Play Osu!相关的知识,希望对你有一定的参考价值。

题目大意

  现在有一个长度为n的只有ox组成的字符串。第i个位置上有pi的概率出现o,(1-pi)的概率出现x,如果有一段长度为L的全是o的部分,贡献就是L^2。求最后贡献的期望。

题解

  这题有点思博啊……首先我们对于一个确定的串,从前往后扫,设当前o的长度为L,如果下一个是o的话,那么贡献就会增加(L+1)^2-L^2=2L+1.这样的话从前往后扫,我们维护两个值,一个是当前期望的o的长度now,一个是期望贡献ans,这样ans+=(2*now+1)*pi,now=(now+1)*pi

技术分享
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstdlib>
 5 #include<cstring>
 6 using namespace std;
 7 int n;
 8 double p,now,ans;
 9 int main()
10 {
11     ans=0.0;now=0.0;
12     scanf("%d",&n);
13     for(int i=1;i<=n;i++)
14     {
15         cin>>p;
16         ans+=(2*now+1)*p;now=(now+1)*p;
17     }
18     printf("%.10f",ans);
19     return 0;
20 }
View Code

 

以上是关于Codeforces B Let's Play Osu!的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #606 (Div. 2) D. Let's Play the Words?(贪心+map)

排序规律Codeforces Round #254 (Div. 2) - D. Rooter's Song

CodeForces - 837E - Vasya's Function | Educational Codeforces Round 26

[CodeForces - 614B] B - Gena's Code

Codeforces 837E. Vasya's Function

Codeforces 837E Vasya's Function 数论 找规律