zoukankan      html  css  js  c++  java
  • 期望及期望dp

    首先给出期望的定义

    期望

    简单说就是概率×概率的价值

    OSU! 

    ∵(x+1)3=x3+3x2+3x+1

    可以看出每多出一个1,答案就会增加3x2+3x+1

    于是可以维护x和x2的期望

    x1[i]=(x1[i1]+1)p[i];

    x2[i]=(x2[i1]+2x1[i1]+1)p[i];

    ans[i]=ans[i1]+(3x2[i1]+3x1[i1]+1)p[i];

    ans[n]即是答案

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #define ll long long
    using namespace std;
    const int maxn=100005;
    inline ll read(){
        ll x=0,k=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-') k=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch-'0');ch=getchar();}
        return k*x;
    }
    double a[maxn],b[maxn],ans[maxn],p[maxn];
    int main(){
    //    freopen(".in","r",stdin);
    //    freopen(".out","w",stdout);
        int n;
        n=read();
        for(int i=1;i<=n;i++) cin>>p[i];
        for(int i=1;i<=n;i++) a[i]=(a[i-1]+1)*p[i];
        for(int i=1;i<=n;i++) b[i]=(b[i-1]+2*a[i-1]+1)*p[i];
        for(int i=1;i<=n;i++) ans[i]=ans[i-1]+(3*b[i-1]+3*a[i-1]+1)*p[i];
        printf("%.1lf",ans[n]);
        return 0;
    }
    View Code

    期望dp

    求解达到某一目标的期望花费:因为最终的花费无从知晓(不可能从∞推起),所以期望dp需要倒序求解。

    一般的套路是f[n]=0即在n时的期望花费为0

    在由形如f[i]=g(f[i-1])一类的关系通过移项,合并同类项等求出倒推的式子

    有这样的套路式 f ∑ f′ × w

     

  • 相关阅读:
    OSG开源教程(转)
    小组项目工作分配,任务确认
    OSG安装编译
    JAVA开发工具IDEA使用体验
    软件工程结对项目总结
    迭代开发个人总结20160705
    迭代开发个人总结20160704
    迭代开发个人总结20160703
    迭代开发个人总结20160702
    迭代开发个人总结20160701
  • 原文地址:https://www.cnblogs.com/silent-pyb/p/9826341.html
Copyright © 2011-2022 走看看