WJMZBMR打osu! / Easy
题目
解析
设x为当前期望连续o长度,ans为当前期望得分,则
?:ans+=(x2+1)/2,x=(x+1)/2
x:x=0
o:ans+=2x+1,++x
精度和字符不要用scanf输入
code:
#include<cstdio>
#include<iomanip>
#include<iostream>
#define db long double
using namespace std;
int n;
db x,ans;
char q;
int main()
{
scanf("%d",&n);
while(n--){cin>>q;if(q=='o')ans+=x*2+1,x+=1;else if(q=='x')x=0;else ans+=x+0.5,x=x/2.0+0.5;}
cout<<fixed<<setprecision(4)<<ans;
return 0;
}