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 }
以上是关于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