[BZOJ 3450]Tyvj1952 Easy:期望DP

来源:互联网 发布:ceo cfo cmo 知乎 编辑:程序博客网 时间:2024/06/04 22:26

点击这里查看原题

设l为当前期望长度,分为三种情况:

  • 当前位为‘x’,l清零
  • 当前位为‘o’,ans+=(l+1)^2-l^2,l++
  • 当前位为‘?’,那么l可能变成l+1,也可能变成0,因此l的期望变为(l+1)/2,ans+=(2l+1)/2。
/*User:SmallLanguage:C++Problem No.:3450*/#include<bits/stdc++.h>#define ll long long#define inf 999999999using namespace std;double ans,l;int n;char c[300005];int main(){    freopen("data.in","r",stdin);//    scanf("%d%s",&n,c);    for(int i=0;i<n;i++){        if(c[i]=='x') l=0;        else if(c[i]=='o') ans+=2*l+1,l++;        else ans+=(2*l+1)*0.5,l=(l+1)*0.5;    }    printf("%.4lf\n",ans);    return 0;}
0 0