zoukankan      html  css  js  c++  java
  • BZOJ4318: OSU!

    【传送门:BZOJ4318


    简要题意:

      给出n个位置,每个位置可以有a[i]的概率会变成1,1-a[i]的概率为0,最后会变成一个长度为n的01串,而每个01串中,连续x个1会带来x3的价值(这x个1不能被其他连续的1所覆盖),求出期望分数


    题解:

      期望DP

      太神了。。

      首先假设当前有一个串,它的后缀有x个1,那么在它的下一个位置出现1的价值就是(x+1)3-x3=3x2+3x+1,期望就是a[i]*(3x2+3x+1)

      而我们可以得到x和x2的期望

      那么这道题就可以做了


    参考代码:

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    double x[110000],x2[110000],a[110000],f[110000];
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%lf",&a[i]);
            x[i]=(x[i-1]+1)*a[i];
            x2[i]=(x2[i-1]+2*x[i-1]+1)*a[i];
            f[i]=f[i-1]+(3*x2[i-1]+3*x[i-1]+1)*a[i];
        }
        printf("%.1lf
    ",f[n]);
        return 0;
    }

     

  • 相关阅读:
    JSP第三章
    JSP第二章
    JSP第一章
    异常
    七种设计原则
    非泛型集合
    .NET第一章
    航班预定系统
    JSP数据交互(二)
    JSP数据交互(一)
  • 原文地址:https://www.cnblogs.com/Never-mind/p/8657499.html
Copyright © 2011-2022 走看看