zoukankan      html  css  js  c++  java
  • 洛谷 P1297 [国家集训队]单选错位(期望)

    传送门


    解题思路

    很妙的一道题。
    首先若是选项数都相同,则同等于lc的随机写答案。
    所以影响答案的就是前后的选项数。
    分情况讨论:

    • (a[i]==a[i+1]),则 (ans+=frac{1}{a[i]})
    • (a[i]> a[i+1]),则选择的选项在 (a[i+1]) 中的概率为 (frac{a[i+1]}{a[i]}),再乘上选对的概率 (frac{1}{a[i+1]}),得到 (ans+=frac{1}{a[i]})
    • (a[i]< a[i+1]),则下一个题的答案在 (a[i]) 中的概率为 (frac{a[i]}{a[i+1]}),再乘上选对的概率 (frac{1}{a[i]}),得到 (ans+=frac{1}{a[i+1]})

    于是总结一下,

    [ans=sum_{i=1}^{n}frac{1}{max(a[i],a[i+1])} ]

    AC代码

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<iomanip>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    const int maxn=1e7+5;
    int n,A,B,C,a[maxn];
    double e;
    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;
    	for(int i=1;i<n;i++) e+=1.0/max(a[i],a[i+1]);
    	e+=1.0/max(a[n],a[1]);
    	printf("%0.3lf",e);
        return 0;
    }
    
  • 相关阅读:
    5.共享文件夹
    4.CentOS安装
    JS 递归
    Gulp 笔记
    Js call apply bind区别
    Js new 过程解析
    Js 原型和原型链
    JS blur和click 顺序冲突
    重新认识button disabled属性
    英语笔记3
  • 原文地址:https://www.cnblogs.com/yinyuqin/p/14880265.html
Copyright © 2011-2022 走看看