BZOJ2134: 单选错位(期望乱搞)】的更多相关文章

Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1101  Solved: 851[Submit][Status][Discuss] Description Input n很大,为了避免读入耗时太多, 输入文件只有5个整数参数n, A, B, C, a1, 由上交的程序产生数列a. 下面给出pascal/C/C++的读入语句和产生序列的语句(默认从标准输入读入):  // for pascal  readln(n,A,B,C,q[1]);  for…
bzoj2134单选错位 题意: 试卷上n道选择题,每道分别有ai个选项.某人全做对了,但第i道题的答案写在了第i+1道题的位置,第n道题答案写在第1题的位置.求期望能对几道.n≤10000000 题解: 水题,然而我不会.第i题与第i+1题答案一样的概率是1/max(aiai+1) 代码: #include <cstdio> #include <algorithm> using namespace std; int a[],n,A,B,C; int main(){ scanf(&…
BZOJ_2134_单选错位——期望DP 题意: 分析:设A为Ai ∈ [1,ai+1] 的概率,B为Ai = A(imodn+1)的概率显然P(A|B) = 1,那么根据贝叶斯定理P(B) = P(B|A)*P(A)P(A) = min(ai,ai+1)/aiP(B|A) = 1/a(i+1)P(B) = min(ai,ai+1)/(ai*a(i+1))又因为期望的可加性,直接加起来统计答案 代码: #include <stdio.h> #include <string.h> #…
第i个填到第i+1个的期望得分显然是1/max(a[i],a[i+1]).根据期望的线性性, 我们只需将每个选项的期望值累加即可. --------------------------------------------------------------------------- #include<bits/stdc++.h>   using namespace std;   typedef long long ll;   const int maxn = 10000009;   int a…
2134: 单选错位 Time Limit: 10 Sec Memory Limit: 259 MB Description Input 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)…
题目描述 输入 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; // fo…
1.题意:这就是说考试的时候抄串了一位能对几个(雾) 2.分析:这是一个期望问题,期望就是平均,E(a+b)=E(a)+E(b),所以我们直接算出每个点能对几个就好,那么就是1/max(a[i],a[i%n+1])就好,最后加起来 #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; #define LL long l…
[题意]有n道题,第i道题有ai个选项.把第i道题的正确答案填到第i+1道题上(n填到1),问期望做对几道题.n<=10^7. [算法]期望DP [题解]正确答案的随机分布不受某道题填到后面是否正确影响,因此每道题对的期望都是独立的. 从排列的角度分析,对每道题有a[i-1]个选择和a[i]个选项,共a[i-1]*a[i]种排列,其中只有min(a[i-1],ai)种排列使这道题正确,所以 $$E(i)=\frac{Min(a[i-1],a[i])}{a[i-1]*a[i]}=\frac{1}{…
题目:https://www.luogu.org/problemnew/show/P1297 读懂题后就变得很简单啦: 对于一个问题和它的下一个问题,我们考虑: 设上一个问题有 a 个选项,下一个问题有 b 个选项: 那么上一道题中选到每个选项的概率是 1/a: 下面对应正确的概率是 1/b: 则总期望是 1/a * 1/b * min(a,b): 也就是 1/max(a,b). 代码如下: #include<iostream> #include<cstdio> #include&…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2134 题解:因为每个答案之间是互不影响的,所以我们可以挨个计算. 假设当前在做 i 题目,如果a[i+1]>=a[i],那么我们只需要让i+1题目的答案是i的答案即可,ans+=1/a[i+1] 否则 i 题目的答案必须在1--a[i+1],所以ans+=a[i+1]/a[i]*1/a[i+1]=1/a[i] 换句话说 ans+=min(1/a[i+1],1/a[i]) 代码: #inclu…