思路:
我们弄一个期望长度L,如果是o,那对答案的贡献就是2L+1,如果是x,那直接没有,如果是?,那就是在0和2L+1中,除个2。
c o d e code code
#include<iostream>
#include<cstdio>
using namespace std;
int n;
string s;
int main()
{
scanf("%d", &n);
cin>>s;
double EXL=0, ans=0;
for(int i=0; i<n; i++)
{
if(s[i]=='o')
{
ans+=EXL*2.0+1.0;
EXL+=1.0;
}
if(s[i]=='x')
EXL=0;
if(s[i]=='?')
{
ans+=(2.0*EXL+1.0)/2.0;
EXL=(EXL+1.0)/2.0;
}
}
printf("%.4lf", ans);
return 0;
}