【期望DP】BZOJ2134- 单选错位】的更多相关文章

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(&…
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…
[题目大意] 有n道题,第i道题有ai个选项.一个人把所有的正确答案填到了后面一题上(特殊的,当i=n的时候填到1上),问他期望做对几道题? [思路] 沙茶题……显然每道题的期望是独立的. 对于某道题,它做对的概率等于当前题目和下一题答案是一样的概率.考虑选项数较小的那一个,它和另一题答案相同的概率=1/另外一道题的选项. 所以dp[i]=1/max(a[i],a[i+1]) over~ #include<bits/stdc++.h> using namespace std; typedef…
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…
题目: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…
预处理前后缀异或和,用trie得到前后缀最大答案,枚举中间点把左右两边加起来就是当前中间点的最大答案了...这个操作没见过,比较有意思,记录一下 #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> #define ll long long using namespace std; , inf=1e9; ];}tree…
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> #…
[题意]有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}{…
第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…
P1297 [国家集训队]单选错位 期望入门 我们考虑涂到第$i$道题时的情况 此时题$i$答案有$a[i]$种,我们可能涂$a[i+1]$种 分类讨论: 1.$a[i]>=a[i+1]$: 可能涂到答案的概率为$(a[i+1]/a[i])*(1/a[i+1])=1/a[i]$,贡献为1 没涂到的概率为$1-1/a[i]$,贡献为0 期望值:$1*(1/a[i])+0*(1-1/a[i])=1/a[i]$ 2.$a[i]<a[i+1]$: 可能涂到答案的概率为$(a[i]/a[i+1])*(1…