zoukankan      html  css  js  c++  java
  • 【洛谷P1297】单选错位【期望】

    题目大意:

    题目链接:https://www.luogu.org/problemnew/show/P1297
    nn道单选题,第ii道题有aia_i个选项,在1ai1sim a_i中随机选择一个选项写到第i+1i+1题的答案上。其中第nn题写道第一题的答案上。求做对题数的期望。


    思路:

    分类讨论一下。

    • ai=ai+1a_i=a_{i+1},那么显然随机的答案在第i+1i+1题也是随机的。期望为1aifrac{1}{a_i},也就是1ai+1frac{1}{a_{i+1}}
    • ai>ai+1a_i>a_{i+1},只有ai+1aifrac{a_{i+1}}{a_i}的概率答案在1ai+11sim a_{i+1}中。所以期望为ai+1ai×1ai+1=1aifrac{a_{i+1}}{a_i} imes frac{1}{a_{i+1}}=frac{1}{a_i}
    • ai<ai+1a_i<a_{i+1},由于随机的答案只在1ai1sim a_i中,而第i+1i+1题正确答案有aiai+1frac{a_i}{a_{i+1}}的概率在1ai1sim a_i中,所以期望为aiai+1×1ai=1ai+1frac{a_i}{a_{i+1}} imes frac{1}{a_i}=frac{1}{a_{i+1}}

    综上,答案就是i=1n1max(ai,ai+1)sum^{n}_{i=1}frac{1}{max(a_i,a_{i+1})}


    代码:

    #include <cstdio>
    #include <iostream>
    using namespace std;
    
    const int N=10000010;
    int n,a[N];
    double ans;
    
    void init()  //题目给出的生成数据的方法
    {
    	int A,B,C;
    	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;
    }
    
    int main()
    {
    	init();
    	a[n+1]=a[1];
    	/*printf("a数组如下:
    ");
    	for (int i=1;i<=n;i++)
    		printf("%d ",a[i]);printf("
    
    ");*/
    	for (int i=1;i<=n;i++)
    		ans+=1/(double)max(a[i],a[i+1]);
    	printf("%0.3lf",ans);
    	return 0; 
    }
    
  • 相关阅读:
    ‘Host’ is not allowed to connect to this mysql server
    centos7安装mysql
    further configuration avilable 不见了
    Dynamic Web Module 3.0 requires Java 1.6 or newer
    hadoop启动 datanode的live node为0
    ssh远程访问失败 Centos7
    Linux 下的各种环境安装
    Centos7 安装 python2.7
    安装scala
    Centos7 安装 jdk 1.8
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/11998311.html
Copyright © 2011-2022 走看看