[ BZOJ 2134 ] 单选错位
\(\\\)
\(Description\)
一共\(N\)道题目,第\(i\)道题有\(A_i\)个选项,现在有一个人做完了所有题目,但将每一道题的答案都写到了下一道题的位置\((\)第\(N\)道写到了第一道的位置\()\),现在这个人的选项和每道题的正确答案对于每一个选项均为随机,求这个人做对的题目数的期望。
- \(N\in [1,10^7]\)
\(\\\)
\(Solution\)
第\(i\)个位置选择了合法的第\(i+1\)个位置的概率,即选了一个范围在\([1,A_{i+1}]\)范围内的数的概率,是\(\frac{min(A_i,A_{i+1})}{A_i}\)。
选对的概率是\(\frac{1}{A_{i+1}}\),所以第\(i\)个位置做对了第\(i+1\)道题的概率是\(\frac{min(A_i,A_{i+1})}{A_i\times A_{i+1}}=\frac{1}{max(A_i,A_{i+1})}\)。
根据期望的线性性,做对题目总数的期望等于做对每一道题的期望之和,而做对一道题的贡献是\(1\),所以是做对每一道题的概率之和,求出来每一道的概率之后直接求和就好。
\(\\\)
\(Code\)
#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 10000010
#define R register
#define gc getchar
using namespace std;
typedef long long ll;
inline int rd(){
int x=0; bool f=0; char c=gc();
while(!isdigit(c)){if(c=='-')f=1;c=gc();}
while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=gc();}
return f?-x:x;
}
int n,A,B,C,a[N];
int main(){
n=rd(); A=rd(); B=rd(); C=rd(); a[1]=rd();
for(R int i=2;i<=n;i++) a[i]=((ll)a[i-1] * A + B) % 100000001;
for(R int i=1;i<=n;i++) a[i] = a[i]%C+1;
double ans=1.0/(double)max(a[1],a[n]);
for(R int i=2;i<=n;++i) ans+=1.0/(double)max(a[i],a[i-1]);
printf("%.3lf\n",ans);
return 0;
}
[ BZOJ 2134 ] 单选错位的更多相关文章
- BZOJ 2134: 单选错位( 期望 )
第i个填到第i+1个的期望得分显然是1/max(a[i],a[i+1]).根据期望的线性性, 我们只需将每个选项的期望值累加即可. ---------------------------------- ...
- bzoj 2134 单选错位(期望)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2134 [题意] ai与ai+1相等得1分,求期望. [思路] 每个题的期望都是独立的. ...
- BZOJ——2134: 单选错位
http://www.lydsy.com/JudgeOnline/problem.php?id=2134 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: ...
- 【刷题】BZOJ 2134 单选错位
Description Input n很大,为了避免读入耗时太多, 输入文件只有5个整数参数n, A, B, C, a1, 由上交的程序产生数列a. 下面给出pascal/C/C++的读入语句和产生序 ...
- BZOJ 2134 单选错位 ——期望DP
发现概率是∑1/两道题答案相同的概率, 稍加化简 #include <map> #include <ctime> #include <cmath> #include ...
- 【BZOJ】2134: 单选错位 期望DP
[题意]有n道题,第i道题有ai个选项.把第i道题的正确答案填到第i+1道题上(n填到1),问期望做对几道题.n<=10^7. [算法]期望DP [题解]正确答案的随机分布不受某道题填到后面是否 ...
- Bzoj 2134: [国家集训队2011]单选错位(期望)
2134: 单选错位 Time Limit: 10 Sec Memory Limit: 259 MB Description Input n很大,为了避免读入耗时太多,输入文件只有5个整数参数n, A ...
- BZOJ2134 luoguP1297 [国家集训队]单选错位
单选错位 [问题描述] gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案.试卷上共有n道单选题,第i道单选题有ai个选项,这ai个选项编号是1,2,3,…,a ...
- BZOJ_2134_单选错位——期望DP
BZOJ_2134_单选错位——期望DP 题意: 分析:设A为Ai ∈ [1,ai+1] 的概率,B为Ai = A(imodn+1)的概率显然P(A|B) = 1,那么根据贝叶斯定理P(B) = P( ...
随机推荐
- Python学习笔记 (1)Hello World(环境搭建+输出Hello World!)
随想 高考发挥失常.科三遇火车发挥失常,各种不顺……突然发现假期都快没了,才想起高考前想象的这个假期要做的一堆事,现在来多完成一件吧. 这几篇博客仅只是我的学习笔记,凑合看吧.我这个python小白看 ...
- HDU 1212 大整数的取模运算
因为这里是MOD最大为100000 所以我将字符串看作5个一组,并记录后面跟了多少个100000 每次取5个数根据其数据进行取模更新 注意过程中 100000*100000会超int #include ...
- Neo4j ETL工具快速上手:简化从关系数据库到图数据库的数据迁移
注:本文系从https://medium.com/neo4j/tap-into-hidden-connections-translating-your-relational-data-to-graph ...
- 关于System.Convert那些事
关于System.Convert那些事 前言 不知咋的,今天腰疼的不行,疼的站不起来了,今下午突然就疼起来了,唉,这是身体要垮了的节奏啊,再加上自己的VAX试用期到了,弄了半天也不行,烦. 正文 看到 ...
- Unity5.1 新的网络引擎UNET(十五) Networking 引用--中
孙广东 2015.7.21 本节提供了与网络系统一起使用的组件的具体信息. 3.NetworkClient NetworkClient 是一个 HLAPI 类,管理网络连接到服务器 - - 相应着 U ...
- Android自己定义提示框
在开发中,假设感觉系统自带的提示框不好看,开发人员能够自定义提示框的样式.主要是继承Dialog 程序文件夹结构 关键代码 package com.dzt.custom.dialog; import ...
- 放大的X(杭电2565)
/*放大的X 请你编程画一个放大的'X'. Input 输入数据第一行是一个整数T,表示有T组測试数据: 接下来有T行,每行有一个正奇数n(3 <= n <= 79).表示放大的规格. O ...
- 汉澳Sinox2014X64server高级桌面服务器版操作系统公布
汉澳Sinox2014X64server高级桌面服务器版操作系统公布 当你在现代城市夜空中看到一道闪电.屏幕中央闪过几个图形,转眼间变成美轮美奂的紫色空中天国,说明你来到了汉澳sinox2014世 ...
- 拥抱开源——Linux C/C++程序猿必须熟悉的开源项目
作为一个经验丰富的Linux C/C++程序猿, 肯定亲手写过各种功能的代码, 比方封装过数据库訪问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件訪问的类. 封装过UI界面库等. 也在实 ...
- bookstrap form表单简单-smart-form
代码: <form class="smart-form" id="smartForm"> <fieldset> <legend&g ...