BZOJ2134 luoguP1297 [国家集训队]单选错位
单选错位
【问题描述】
gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案。试卷上共有n道单选题,第i道单选题有ai个选项,这ai个选项编号是1,2,3,…,ai,每个选项成为正确答案的概率都是相等的。lc采取的策略是每道题目随机写上1-ai的某个数作为答案选项,他用不了多少时间就能期望做对道题目。gx则是认认真真地做完了这n道题目,可是等他做完的时候时间也所剩无几了,于是他匆忙地把答案抄到答题纸上,没想到抄错位了:第i道题目的答案抄到了答题纸上的第i+1道题目的位置上,特别地,第n道题目的答案抄到了第1道题目的位置上。现在gx已经走出考场没法改了,不过他还是想知道自己期望能做对几道题目,这样他就知道会不会被lc鄙视了。
我们假设gx没有做错任何题目,只是答案抄错位置了。
【输入格式】
n很大,为了避免读入耗时太多,输入文件只有5个整数参数n, A, B, C, a1,由上交的程序产生数列a。下面给出pascal/C/C++的读入语句和产生序列的语句(默认从标准输入读入):
选手可以通过以上的程序语句得到n和数列a(a的元素类型是32位整数),n和a的含义见题目描述。
【输出格式】
输出一个实数,表示gx期望做对的题目个数,保留三位小数。
【样例输入】
3 2 0 4 1
【样例输出】
1.167
【样例说明】
a[] = {2,3,1}
|
正确答案 |
gx的答案 |
做对题目 |
出现概率 |
|
{1,1,1} |
{1,1,1} |
3 |
1/6 |
|
{1,2,1} |
{1,1,2} |
1 |
1/6 |
|
{1,3,1} |
{1,1,3} |
1 |
1/6 |
|
{2,1,1} |
{1,2,1} |
1 |
1/6 |
|
{2,2,1} |
{1,2,2} |
1 |
1/6 |
|
{2,3,1} |
{1,2,3} |
0 |
1/6 |
共有6种情况,每种情况出现的概率是1/6,gx期望做对(3+1+1+1+1+0)/6 = 7/6题。(相比之下,lc随机就能期望做对11/6题)
【数据范围】
对于30%的数据 n≤10, C≤10
对于80%的数据 n≤10000, C≤10
对于90%的数据 n≤500000, C≤100000000
对于100%的数据 2≤n≤10000000, 0≤A,B,C,a1≤100000000
所求即为连续两题答案相同的个数期望
考虑每题对答案的贡献
总共不同答案个数为 ∏ai ,第 i 题答案正确的方案数为∏ai / ( ai - 1 * ai ) * min(ai, ai - 1)
因此第 i 题对答案贡献为 1 / max(ai, ai - 1)
ans = ∑ 1 / max(ai, ai - 1)
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring> using namespace std; template <typename tn> void read (tn & a) {
tn x = , f = ;
char c = getchar();
while (c < '' || c > ''){ if (c == '-') f = -; c = getchar(); }
while (c >= '' && c <= ''){ x = x * + c - ''; c = getchar(); }
a = f == ? x : -x;
} const long long MAXN = ;
long long n, A, B, C;
long long a[MAXN];
double ans; int main() {
read(n);
read(A);
read(B);
read(C);
read(a[]);
ans = ;
for (int i = ; i <= n; ++i) {
a[i] = ((long long)a[i - ] * A + B) % ;
}
for (int i = ; i <= n; ++i) {
a[i] = a[i] % C + ;
}
a[] = a[n];
for (int i = ; i <= n; ++i) {
ans += (double) / (double)(max(a[i], a[i - ]));
}
printf("%.3f\n", ans);
return ;
}
BZOJ2134 luoguP1297 [国家集训队]单选错位的更多相关文章
- P1297 [国家集训队]单选错位(期望)
P1297 [国家集训队]单选错位 期望入门 我们考虑涂到第$i$道题时的情况 此时题$i$答案有$a[i]$种,我们可能涂$a[i+1]$种 分类讨论: 1.$a[i]>=a[i+1]$: 可 ...
- Luogu P1297 [国家集训队]单选错位
P1297 [国家集训队]单选错位 题目背景 原 <网线切割>请前往P1577 题目描述 gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案.试卷上 ...
- P1297 [国家集训队]单选错位
题目背景 原 <网线切割>请前往P1577 题目描述 gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案.试卷上共有n道单选题,第i道单选题有ai个 ...
- BZOJ.2134.[国家集训队]单选错位(概率 递推)
题目链接 如题目中的公式,我们只要把做对每个题的概率加起来就可以了(乘个1就是期望). 做对第i道题的概率 \[P_i=\frac{1}{max(a_{i-1},a_i)}\] 原式是 \(P_i=\ ...
- 洛谷P1297 [国家集训队]单选错位_数学期望
考虑第 iii 位, 那么当前共有 a[i]a[i]a[i] 种选项,那么当前选项正确的情况就是下一个被误填的答案与当前答案相同.换句话说,当前答案一共有 a[i]a[i]a[i] 种可能,而下一个答 ...
- Luogu P1297 [国家集训队]单选错位 | 概率与期望
题目链接 题解: 单独考虑每一道题目对答案的贡献. 设$g_i$表示gx在第$i$道题目的答案是否正确(1表示正确,0表示不正确),则$P(g_i=1)$表示gx在第$i$道题目的答案正确的概率. 我 ...
- COGS1882 [国家集训队2011]单选错位
★ 输入文件:nt2011_exp.in 输出文件:nt2011_exp.out 简单对比时间限制:1 s 内存限制:512 MB [试题来源] 2011中国国家集训队命题答辩 [问题 ...
- Bzoj 2134: [国家集训队2011]单选错位(期望)
2134: 单选错位 Time Limit: 10 Sec Memory Limit: 259 MB Description Input n很大,为了避免读入耗时太多,输入文件只有5个整数参数n, A ...
- bzoj2134单选错位
bzoj2134单选错位 题意: 试卷上n道选择题,每道分别有ai个选项.某人全做对了,但第i道题的答案写在了第i+1道题的位置,第n道题答案写在第1题的位置.求期望能对几道.n≤10000000 题 ...
随机推荐
- SQL优化之count(*),count(列)
一.count各种用法的区别 1.count函数是日常工作中最常用的函数之一,用来统计表中数据的总数,常用的有count(*),count(1),count(列).count(*)和count(1)是 ...
- piwik custom variables
piwik custom variables 是一个功能非常强大的自定义变量跟踪方案,多用于基于访客或是页面级别的变量跟踪.piwik默认最多可以添加5个自定义变量. 使用方式是在客户端脚本里添加如 ...
- php exec返回状态为1
之前在用到php exec 时 总是保存,返回状态1,那这时怎么排查呢 exec('ls 2>&1', $output, $return_val); print_r($output); ...
- linux新手非常有用的20个命令
引用:http://www.oschina.net/translate/useful-linux-commands-for-newbies 1. ls命令 ls命令是列出目录内容(List Direc ...
- xe5 android 控制蓝牙[转]
用以下代码中的接口实现控制蓝牙的开.关及详细信息 unit Androidapi.JNI.BluetoothAdapter; // (c) RedTitan Technology 2013// JNI ...
- Windows Phone 常用资源
统计分析: 1. 友盟 http://www.umeng.com SDK: http://www.nuget.org/packages/UmengAnalytics/ 集成文档: http://dev ...
- 关闭AutoCAD 2019快速访问工具栏的web和moblie保存文件功能
解决方法如下:1.先关闭CAD,再打开注册表编辑器:开始--运行--输入 regedit2.定位到 [HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R23. ...
- adb调试android设备 说的比较清楚的一篇文章
ADB支持两种连接Android系统的方式,USB方式及网络方式.一般手机及平板默认会设置为USB方式.android系统底层运行着一个服务(adbd),用于相应和管理大家在电脑端的adb命令连接,这 ...
- 【sql】之case when then else end
select a.`name`, sum(( END)) '语文', sum(( END)) '数学', sum(( END))'英语' from t_score a GROUP BY a.`name ...
- MyBatis 接口的使用
为了简化MyBatis的使用MyBatis的使用,MyBatis提供了接口方式自动化生成调用过程,可以大大简化MyBatis的开发 开发映射文件: <select id="queryO ...