[国家集训队] 单选错位
Description
gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案。试卷上共有n道单选题,第i道单选题有ai个选项,这ai个选项编号是1,2,3,…,ai,每个选项成为正确答案的概率都是相等的。lc采取的策略是每道题目随机写上1-ai的某个数作为答案选项,他用不了多少时间就能期望做对 \(\sum_{i=1}^n \frac{1}{a_i}\) 道题目。gx则是认认真真地做完了这n道题目,可是等他做完的时候时间也所剩无几了,于是他匆忙地把答案抄到答题纸上,没想到抄错位了:第i道题目的答案抄到了答题纸上的第i+1道题目的位置上,特别地,第n道题目的答案抄到了第1道题目的位置上。现在gx已经走出考场没法改了,不过他还是想知道自己期望能做对几道题目,这样他就知道会不会被lc鄙视了。
我们假设gx没有做错任何题目,只是答案抄错位置了。
Input
n很大,为了避免读入耗时太多,输入文件只有5个整数参数n, A, B, C, a1,由上交的程序产生数列a。下面给出C++的读入语句和产生序列的语句(默认从标准输入读入):
// for C/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;
选手可以通过以上的程序语句得到n和数列a(a的元素类型是32位整数),n和a的含义见题目描述。
Output
输出一个实数,表示gx期望做对的题目个数,保留三位小数。
Hint
对于\(100%\)的数据 \(2≤n≤10000000, 0≤A,B,C,a1≤100000000\)
Solution
观察到每个题目是否能做对的概率是相等的,所以我们对于每个题目单独考虑。
对于第 \(i\) 道题目,第 \(i-1\) 道题目的答案与 第 \(i\) 道题目的答案可能的组合情况有 \(a[i-1]\times a[i]\) 种,而选对第 \(i\) 道的答案的情况只有 \(min(a[i-1],a[i])\) 种。
所以 \(ans=(\sum \limits_{i=2}^{n} \frac{min(a[i-1],a[i])}{a[i-1]\times a[i]} )+\frac{min(a[1],a
)}{a[1]\times a
}\)
Code
#include<cstdio> #define db double #define N 10000005 #define int long long #define min(A,B) ((A)<(B)?(A):(B)) db ans; int a ; int n,A,B,C; signed main(){ scanf("%lld%lld%lld%lld%lld",&n,&A,&B,&C,a+1); for (int i=2;i<=n;i++) a[i] = (a[i-1]*A+B)%100000001; for (int i=1;i<=n;i++) a[i]=a[i]%C+1; for(int i=2;i<=n;i++) ans+=(db)min(a[i],a[i-1])/(db)(a[i]*a[i-1]); ans+=(db)min(a[1],a )/(db)(a[1]*a ); printf("%.3lf\n",ans); return 0; }
- P1297 [国家集训队]单选错位
- Luogu P1297 [国家集训队]单选错位
- BZOJ.2134.[国家集训队]单选错位(概率 递推)
- P1297 [国家集训队]单选错位
- jzoj1935 [2011集训队出题] 单选错位 概率水题
- jzoj 1935. 【2011集训队出题】单选错位
- BZOJ2038 [2009国家集训队] 小Z的袜子(hose)
- BZOJ2040 : [2009国家集训队]拯救Protoss的故乡
- 【BZOJ 2038】 [2009国家集训队]小Z的袜子(hose)
- BZOJ2038: [2009国家集训队]小Z的袜子(hose) 莫队算法 莫队算法讲解及时间复杂度证明
- bzoj2038: [2009国家集训队]小Z的袜子(hose) (莫队+组合数学)
- 2012国家集训队Round 1 day1 攻占黄金乡
- 2038: [2009国家集训队]小Z的袜子(hose)
- 国家集训队论文集 1999-2009 (附99~15论文下载地址)
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
- bzoj2134: 单选错位
- BZOJ2039: [2009国家集训队]employ人员雇佣
- 【bzoj2038】[2009国家集训队]小Z的袜子(hose) 莫队算法
- 莫队(bzoj 2038: [2009国家集训队]小Z的袜子(hose))
- 2034: [2009国家集训队]最大收益