解题思路:
设f[i]表示前i位的期望得分,
ps:做题时竟不知x2如何转移到(x+1)2,囧……
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int getint()
{
int i=0,f=1;char c;
for(c=getchar();(c<'0'||c>'9')&&c!='-';c=getchar());
if(c=='-')f=-1,c=getchar();
for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0';
return i*f;
}
const int N=300005;
int n;
double l,ans;
char s[N];
int main()
{
//freopen("lx.in","r",stdin);
n=getint();
scanf("%s",s+1);
for(int i=1;i<=n;i++)
if(s[i]=='x')l=0;
else if(s[i]=='o')ans+=2*(l++)+1;
else ans+=l+0.5,l=(l+1)*0.5;
printf("%.4f",ans);
return 0;
}