zoukankan      html  css  js  c++  java
  • luogu P1654 OSU!

    传送门

    基础dp还是想了好久....

    维护连续区间长度的期望 还是三次方

    考虑一次方非常好维护 问题就是期望长度的和 

    记录一下末端1个数的期望就行

    有p[i]的概率继承 有(1-p[i]) 的概率中断

    那么三次方是一样的

    f[],g[],h[]分别维护1,2,3次下的末端期望长度

    然后就可以转移

    注意h[]同时维护最终答案

    Time cost : 35min

    Code:

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<cmath>
     6 using namespace std;
     7 #define N 100005
     8 
     9 int n;
    10 double p[N],f[N],g[N],h[N];
    11 
    12 int main()
    13 {
    14     scanf("%d",&n);
    15     for (int i=1;i<=n;++i) scanf("%lf",&p[i]);
    16     for (int i=1;i<=n;++i)
    17     {
    18         g[i]=p[i]*(g[i-1]+1);
    19         h[i]=p[i]*(h[i-1]+2*g[i-1]+1);
    20         f[i]=p[i]*(f[i-1]+3*h[i-1]+3*g[i-1]+1)+(1-p[i])*f[i-1];
    21     }
    22     printf("%.1lf
    ",f[n]);
    23 }
    View Code

     

    > 别忘了 总有人在等着你
  • 相关阅读:
    Binary Trees
    [POJ] String Matching
    Tree
    Maxmum subsequence sum problem
    poj 2104 划分树
    poj 2486 树形dp
    poj 1848 树形dp
    hdu 4578 线段树
    hdu 4585 set应用
    hdu 2412 树形DP
  • 原文地址:https://www.cnblogs.com/yuyanjiaB/p/9898417.html
Copyright © 2011-2022 走看看