码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ_2134_单选错位——期望DP

时间:2018-03-06 00:49:02      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:mes   pac   das   def   clu   min   long   using   zoj   

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\n",a[i]);
        printf("%.3lf",ans);
}

 

BZOJ_2134_单选错位——期望DP

标签:mes   pac   das   def   clu   min   long   using   zoj   

原文地址:https://www.cnblogs.com/suika/p/8511829.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!