【题意】有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}{Max(a[i-1],a[i])}$$

然后根据期望的线性相加。

复杂度O(n)。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
int n,a[maxn];
int main()
{
int A,B,C;
scanf("%d%d%d%d%d",&n,&A,&B,&C,&a[]);
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];
double ans=;
for(int i=;i<=n;i++)ans+=1.0/max(a[i],a[i-]);
printf("%.3lf",ans);
return ;
}

如果实在纠结前面题对和后面题对有一题重合,考虑期望可以线性相加,所以实际上是可以拆出来计算的。

【BZOJ】2134: 单选错位 期望DP的更多相关文章

  1. BZOJ 2134 单选错位 ——期望DP

    发现概率是∑1/两道题答案相同的概率, 稍加化简 #include <map> #include <ctime> #include <cmath> #include ...

  2. BZOJ 2134: 单选错位( 期望 )

    第i个填到第i+1个的期望得分显然是1/max(a[i],a[i+1]).根据期望的线性性, 我们只需将每个选项的期望值累加即可. ---------------------------------- ...

  3. BZOJ_2134_单选错位——期望DP

    BZOJ_2134_单选错位——期望DP 题意: 分析:设A为Ai ∈ [1,ai+1] 的概率,B为Ai = A(imodn+1)的概率显然P(A|B) = 1,那么根据贝叶斯定理P(B) = P( ...

  4. bzoj 2134 单选错位(期望)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2134 [题意] ai与ai+1相等得1分,求期望. [思路] 每个题的期望都是独立的. ...

  5. BZOJ——2134: 单选错位

    http://www.lydsy.com/JudgeOnline/problem.php?id=2134 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: ...

  6. 【刷题】BZOJ 2134 单选错位

    Description Input n很大,为了避免读入耗时太多, 输入文件只有5个整数参数n, A, B, C, a1, 由上交的程序产生数列a. 下面给出pascal/C/C++的读入语句和产生序 ...

  7. [ BZOJ 2134 ] 单选错位

    \(\\\) \(Description\) 一共\(N​\)道题目,第\(i​\)道题有\(A_i​\)个选项,现在有一个人做完了所有题目,但将每一道题的答案都写到了下一道题的位置\((​\)第\( ...

  8. Bzoj 2134: [国家集训队2011]单选错位(期望)

    2134: 单选错位 Time Limit: 10 Sec Memory Limit: 259 MB Description Input n很大,为了避免读入耗时太多,输入文件只有5个整数参数n, A ...

  9. 【BZOJ】4318: OSU! 期望DP

    [题意]有一个长度为n的01序列,每一段极大的连续1的价值是L^3(长度L).现在给定n个实数表示该位为1的概率,求期望总价值.n<=10^5. [算法]期望DP [题解]后缀长度是一个很关键的 ...

随机推荐

  1. 经典SQL语句基础50题

    很全面的sql语句大全.都是很基础性的,今天特意整理了下.大家互相学习.大家有好的都可以分享出来,  分享也是一种快乐. --创建数据库 create database SQL50 --打开SQL50 ...

  2. rabbitmq 配置用户信息

    本文摘自:http://my.oschina.net/hncscwc/blog/262246 1. 用户管理 用户管理包括增加用户,删除用户,查看用户列表,修改用户密码. 相应的命令 (1) 新增一个 ...

  3. Solr实现SQL的查询与统计--转载

    原文地址:http://shiyanjun.cn/archives/78.html Cloudera公司已经推出了基于Hadoop平台的查询统计分析工具Impala,只要熟悉SQL,就可以熟练地使用I ...

  4. 修改gcc/g++默认include路径

    修改gcc/g++默认include路径 转自:http://www.network-theory.co.uk/docs/gccintro/gccintro_23.htmlhttp://ilewen. ...

  5. 【刷题】BZOJ 1195 [HNOI2006]最短母串

    Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,Sn)都是T的子串. Input 第一行是一个正整数n(n<=12) ...

  6. 【UOJ#79】一般图最大匹配(带花树)

    [UOJ#79]一般图最大匹配(带花树) 题面 UOJ 题解 带花树模板题 关于带花树的详细内容 #include<iostream> #include<cstdio> #in ...

  7. python之选择排序

    选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个 ...

  8. 廖大大python学习笔记1

    列表classmates = ['Michael', 'Bob', 'Tracy']classmates.append('tom')print classmates# classmates.inser ...

  9. 【bzoj4571】美味

    Portal -->bzoj4571 Solution emmm持续智力康复.. 虽然说因为统计的是加上\(x\)的跟\(b\)异或的最大值所以可持久化trie用不了了 ​ 但是按位贪心的思想还 ...

  10. 框架----Django框架(进阶篇)

    一.Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层 ...