Luogu P1297 [国家集训队]单选错位
P1297 [国家集训队]单选错位
题目背景
原 《网线切割》请前往P1577
题目描述
gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案。试卷上共有n道单选题,第i道单选题有ai个选项,这ai个选项编号是1,2,3,…,ai,每个选项成为正确答案的概率都是相等的。lc采取的策略是每道题目随机写上1-ai的某个数作为答案选项,他用不了多少时间就能期望做对 \sum_{i=1}^n \frac{1}{a_i}∑i=1nai1 道题目。gx则是认认真真地做完了这n道题目,可是等他做完的时候时间也所剩无几了,于是他匆忙地把答案抄到答题纸上,没想到抄错位了:第i道题目的答案抄到了答题纸上的第i+1道题目的位置上,特别地,第n道题目的答案抄到了第1道题目的位置上。现在gx已经走出考场没法改了,不过他还是想知道自己期望能做对几道题目,这样他就知道会不会被lc鄙视了。
我们假设gx没有做错任何题目,只是答案抄错位置了。
输入输出格式
输入格式:
n很大,为了避免读入耗时太多,输入文件只有5个整数参数n, A, B, C, a1,由上交的程序产生数列a。下面给出pascal/C/C++的读入语句和产生序列的语句(默认从标准输入读入):
// for pascal
readln(n,A,B,C,q[1]);
for i:=2 to n do
q[i] := (int64(q[i-1]) * A + B) mod 100000001;
for i:=1 to n do
q[i] := q[i] mod C + 1; // 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的含义见题目描述。
输出格式:
输出一个实数,表示gx期望做对的题目个数,保留三位小数。
输入输出样例
3 2 0 4 1
1.167
说明
【样例说明】
正确答案 | 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 a[] = {2,3,1}
共有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
吐槽一下题目背景,你都把重题删掉了,还莫名其妙的把这句话留在这,要怎样啊,关键是名字还这么像
==================================================
显然在顺序改变后,作对第i道题目的充要条件就是第i道题目的选项和第i+1道题目的选项相同
现将n和1这个特殊情况忽略
更加显然就得到了下面一个式子
$$
Ans=\sum_{i=2}^{n} \frac{\min {(a_{i-1},a_i)}}{a_{i-1}\times a_i}
$$
下面解释一下这个式子
两个选项相同的概率就是$\frac{\min {(a_{i-1},a_i)}}{a_{i-1}\times a_i}$这一部分,取min是因为两个位置上的选项相同的情况只包含他们的交集
然后分母就是所有的选项的组合
到最后把选对每一个选项的概率相加
当然不要忘记特殊处理n和1哦
代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> const int maxn = 1e7+3; using namespace std; int n, A, B, C, a[maxn]; double ans; 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=2; i<=n; i++) {
double x = a[i-1], y = a[i];
ans += min(x, y)/(x*y);
}
double xx = a[n], yy = a[1];
ans += min(xx, yy)/(xx*yy);
printf("%.3lf", ans);
return 0;
}
Luogu P1297 [国家集训队]单选错位的更多相关文章
- Luogu P1297 [国家集训队]单选错位 | 概率与期望
题目链接 题解: 单独考虑每一道题目对答案的贡献. 设$g_i$表示gx在第$i$道题目的答案是否正确(1表示正确,0表示不正确),则$P(g_i=1)$表示gx在第$i$道题目的答案正确的概率. 我 ...
- P1297 [国家集训队]单选错位(期望)
P1297 [国家集训队]单选错位 期望入门 我们考虑涂到第$i$道题时的情况 此时题$i$答案有$a[i]$种,我们可能涂$a[i+1]$种 分类讨论: 1.$a[i]>=a[i+1]$: 可 ...
- P1297 [国家集训队]单选错位
题目背景 原 <网线切割>请前往P1577 题目描述 gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案.试卷上共有n道单选题,第i道单选题有ai个 ...
- 洛谷P1297 [国家集训队]单选错位_数学期望
考虑第 iii 位, 那么当前共有 a[i]a[i]a[i] 种选项,那么当前选项正确的情况就是下一个被误填的答案与当前答案相同.换句话说,当前答案一共有 a[i]a[i]a[i] 种可能,而下一个答 ...
- BZOJ2134 luoguP1297 [国家集训队]单选错位
单选错位 [问题描述] gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案.试卷上共有n道单选题,第i道单选题有ai个选项,这ai个选项编号是1,2,3,…,a ...
- BZOJ.2134.[国家集训队]单选错位(概率 递推)
题目链接 如题目中的公式,我们只要把做对每个题的概率加起来就可以了(乘个1就是期望). 做对第i道题的概率 \[P_i=\frac{1}{max(a_{i-1},a_i)}\] 原式是 \(P_i=\ ...
- luogu P2757 [国家集训队]等差子序列
题目链接 luogu P2757 [国家集训队]等差子序列 题解 线段树好题 我选择暴力 代码 // luogu-judger-enable-o2 #include<cstdio> inl ...
- luogu P2619 [国家集训队2]Tree I
题目链接 luogu P2619 [国家集训队2]Tree I 题解 普通思路就不说了二分增量,生成树check 说一下坑点 二分时,若黑白边权有相同,因为权值相同优先选白边,若在最有增量时出现黑白等 ...
- [Luogu P1829] [国家集训队]Crash的数字表格 / JZPTAB (莫比乌斯反演)
题面 传送门:洛咕 Solution 调到自闭,我好菜啊 为了方便讨论,以下式子\(m>=n\) 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: \(\l ...
随机推荐
- Hierarchyviewer定位Android图片资源的研究
之前就在研究能否通过Hierarchyviewer找到所有所见的资源 在导入Hierarchyviewer之后才发现绑定在View上的drawable与实际的图片资源之间并没有维系着一个固定的对应关系 ...
- oracle基本建表语句
oracle基本建表语句 2010-09-20 10:37:33| 分类: 数据库 | 标签:数据库 oracle |字号 订阅 --创建用户create user han identifie ...
- BS与CS的联系与区别。
C/S是Client/Server的缩写.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系统,如Oracle.Sybase.Informix或 SQL Server.客户端需要安装专用的 ...
- Mac系统打开命令行终端及查看操作系统版本号的方法
Mac系统打开命令行终端的方法: 应用程序 --> 实用工具 --> 终端 Mac系统终端查看操作系统版本号的方法: 输入:#more /System/Library/CoreServic ...
- 在MAC端查看win7
在MAC端查看win7,在finder中打开网络,输入win7地址,填入用户名和密码,就可以了
- POJ2127 Greatest Common Increasing Subsequence
POJ2127 给定两个 整数序列,求LCIS(最长公共上升子序列) dp[i][j]表示A的A[1.....i]与B[1.....j]的以B[j]为结尾的LCIS. 转移方程很简单 当A[i]!=B ...
- Redis: Redis on Windows Setup
ylbtech-Redis: Redis on Windows Setup 1.返回顶部 1. 2. 3. 4. 5. 6. 7. 8. 9. 2.返回顶部 3.返回顶部 4.返回顶部 5 ...
- 栗染-Error parsing D:\sdkforas\android-sdk-windows\system-images\android-24\android-wear\x86\devices.xml
每次打开android virtual device manager 下面都会出现这样的问题 解决办法: 打开自己安装的sdk目录,找到/tools/lib/devices.xml去替换图中路径里面的 ...
- [App Store Connect帮助]四、添加 App 图标、App 预览和屏幕快照(2)添加一个 App Store 图标
您必须提供一个 App Store 图标,用于在 App Store 中的不同部分展示您的 App.请遵照 Human Interface Guidelines(<人机界面准则>)创建您的 ...
- python实现对excel数据进行修改/添加
import osimport xlrdfrom xlutils.copy import copydef base_dir(filename=None): return os.path.join(os ...