zoukankan      html  css  js  c++  java
  • BZOJ 4318: OSU! 期望概率dp && 【BZOJ3450】【Tyvj1952】Easy 概率DP

    这两道题是一样的......

    我就说一下较难的那个 OSU!:

    这道15行的水题我竟然做了两节课......

    若是f[i][0]=(1-p)*f[i-1][0]+(1-p)*f[i-1][1],f[i][1]=p*(f[i-1][0]+1.0)+p*(f[i-1][1]+OOXX);

    我们合并一下f[i]=p*1.0+p*OOXX=p*OX;

    OX:就是期望x^3的差,也就是(x+1)^3=x^3+3*x^2+3*x+1.0,中的3*x^2+3*x+1.0,这样我们要维护x^2以及x注意这里的x^2和x是指结尾的长度x

    #include<cstdio>
    double f,p,X2,X1;
    int n;
    int main()
    {
       scanf("%d",&n);
       for(int i=1;i<=n;i++)
       {
         scanf("%lf",&p);
         f+=p*(3.0*X2+3.0*X1+1.0);
         X2=p*(X2+2.0*X1+1.0);
         X1=p*(X1+1.0);
       }
       printf("%.1lf",f);
    }

     下面给一下Easy的代码

    #include<cstdio>
    #include<cstring>
    using namespace std;
    char s[300010];
    double ans,X,now;
    int len;
    int main()
    {
       scanf("%d%s",&len,s);
       for(int i=0;i<len;i++)
       {
          if(s[i]=='?')now=0.5;
          else if(s[i]=='o')now=1.0;
          else now=0.0;
          ans+=now*(2.0*X+1.0);
          X=now*(X+1.0);
       }
       printf("%.4lf",ans);
       return 0;
    }
  • 相关阅读:
    Linux 定时任务
    VIM快速使用
    ulimit 命令
    PG语句
    linux下的PGSQL安装步骤
    linux下安装mysql 5.5和5.6.32
    linux下安装达梦数据库(DM8)x86版本
    redis配置
    sql server 2008安装
    linux下安装部署oracle
  • 原文地址:https://www.cnblogs.com/TSHugh/p/7181782.html
Copyright © 2011-2022 走看看