zoukankan      html  css  js  c++  java
  • BZOJ_2134_单选错位——期望DP

    BZOJ_2134_单选错位——期望DP

    题意:

    分析:
    设A为Ai ∈ [1,ai+1] 的概率,B为Ai = A(imodn+1)的概率
    显然P(A|B) = 1,那么根据贝叶斯定理P(B) = P(B|A)*P(A)
    P(A) = min(ai,ai+1)/ai
    P(B|A) = 1/a(i+1)
    P(B) = min(ai,ai+1)/(ai*a(i+1))
    又因为期望的可加性,直接加起来统计答案

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    #include <queue>
    using namespace std;
    #define LL long long
    #define du double
    du ans;
    int n,A,B,C,a[10000001];
    int main(){
        scanf("%d%d%d%d%d",&n,&A,&B,&C,a+1);
        for (int i=2;i<=n;i++) a[i] = ((long long)a[i-1] * A + B) % 100000001; 
        for (int i=1;i<n;i++) a[i] = a[i] % C +1,ans+=1.0/max(a[i],a[i+1]%C+1);
        a[n]=a[n]%C+1;ans+=1.0/max(a[1],a[n]);
    
        //for(int i=1;i<=n;i++)printf("%d
    ",a[i]);
            printf("%.3lf",ans);
    }
    
  • 相关阅读:
    Kaggle & Machine Learning
    练习题目总结
    日常练习//算法类
    论文阅读
    codeforces专项
    10.26—11.1
    常见算法笔记
    DM/ML学习实践(一)
    Python常见代码
    HDU 4251 --- 主席树(划分树是正解)
  • 原文地址:https://www.cnblogs.com/suika/p/8511829.html
Copyright © 2011-2022 走看看