zoukankan      html  css  js  c++  java
  • Luogu_P1297 [国家集训队]单选错位 概率期望

    Luogu_P1297 [国家集训队]单选错位

    期望


    题目链接
    虽然是期望,但是每个贡献都是(1)所以也就是概率
    (a_i)(a_{i+1})要分类讨论
    如果(a_i=a_{i+1})那么明显概率就是(frac{1}{a_i}=frac{1}{a_i+1})
    如果(a_i>a_{i+1})那么只有(frac{a_{i+1}}{a_i})的概率可能有用,那答对的概率就是(frac{a_{i+1}}{a_i}*frac{1}{a_{i+1}}=frac{1}{a_i})
    如果(a_i<a_{i+1})那么(a_i)的全部都可能有用,可用概率为(1),但是答对的概率是(1*frac{1}{a_{i+1}}=frac{1}{a_{i+1}})
    我们把这三个合并起来
    就是(ans=sum^{n}_{i=1}frac{1}{max(a_i,a_{i+1})})
    可以把(1)或者(n)判掉


    代码如下:

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int maxn=1e7+10;
    ll a[maxn];
    int n,A,B,C;
    double ans=0;
    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+=(double)1.0/max(a[1],a[n]);
        for(int i=2;i<=n;i++){
            ans+=(double)1.0/max(a[i],a[i-1]);
        }
        printf("%.3lf",ans);
        return 0;
    }
    
  • 相关阅读:
    初学flask
    第一次使用pyqt5解决的几个小问题
    一些细节
    关于random
    go语言 方法
    go 语言 struct 另类构造函数 继承
    go 语言 链表 的增删改查
    go 语言 链表
    go 语言struct
    无题
  • 原文地址:https://www.cnblogs.com/ChrisKKK/p/11701034.html
Copyright © 2011-2022 走看看