题目

显然期望dp。

简单想法:

f[i][j]表示前i个人中向右看并且没有被消除的人数的概率

如果第i+1个人是向右,$f[i+1][j+1]=f[i][j]/2$

如果第i+1个人是向左,$f[i+1][j-1]=f[i][j]/2$

最后期望总和是$\sum_{i=0}^{n} i*f[n][i]$

转移没有问题,但容易发现这样算出来的期望剩余人数没有算上向左看的。

什么意思呢?我们都知道期望=数量(人数)*概率,但这里dp只设了向右看的人数状态,虽然也包括了所有向左看的情况,但最后算期望的时候,每种向右看的人数情况的概率所乘的人数 只有向右看的而没有向左看的,这样就忽略了最终剩下的向左看的人数对期望的影响。

比如当j=0,也就是向右看的人数为0时,期望=向右看人数*概率=0*概率=0,但很明显这种情况下向左看的人数还有很多种情况,它们的人数并没有被算上。

但稍微一观察就会发现,向右看和向左看的情况好像是一样的,因此最终期望就等于之前算出的期望总和*2。

这又是什么意思?要把向左看的人算上,还得设个g[i][j]表示前i个人中向左看并且没有被消除的人数的概率,然后转移和期望求和方法与向右看的相同,只是这样的话期望剩余人数就只算上了向左看的而没算上向右看的

那么期望和就是$\sum_{i=0}^{n} i*(f[n][i]+g[n][i])$

也就是说要证明f[n][i]=g[n][i],才能证明向右看的答案*2是正确的。

我们知道,最后剩下的人一定是前一段向左看,后一段向右看,比如<<<>>>>。中间被消掉的一定都是有相对关系的。

那把剩下的人的序列完全对称,得到这个对称序列的概率和对称前是相等的。

就上面那个例子,对称后就得到了<<<<>>>,与原序列<<<>>>>的出现概率相等,只是把向右看的都改为放向左看的,反之亦然而已。数学化地讲:两序列dp形式分别是$f[n][4]$和$g[n][4]$,而两个式子的转移方法相同,所以是等价的。

而每种向右看的情况都对应一种向左看的情况(只要对称就得到了这样一种合法情况),前者向右看的人数和后者向左看的人数相等,即$f[n][i]=g[n][i] | 0\leq i \leq n$。得证。

所以答案为$(\sum_{i=0}^{n} i*f[n][i])*2$

如果没发现对称性,可以直接设期望,比如这篇博客。也可以自行百度其他 dp设期望 的方式。

代码过短不放了

【loj6191】「美团 CodeM 复赛」配对游戏的更多相关文章

  1. LibreOJ #6191. 「美团 CodeM 复赛」配对游戏

    二次联通门 : LibreOJ #6191. 「美团 CodeM 复赛」配对游戏 /* LibreOJ #6191. 「美团 CodeM 复赛」配对游戏 概率dp */ #include <cs ...

  2. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

    题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...

  3. loj #6191. 「美团 CodeM 复赛」配对游戏 期望dp

    题意:有一个栈,随机插入 $n$ 次 $0$/$1$ 如果栈顶是 $1$,然后插入 $0$,则将这两个元素都弹出,否则,插入栈顶. 求:$n$ 次操作后栈中期望的元素个数. 我们发现,按照上述弹栈方式 ...

  4. LOJ #6192. 「美团 CodeM 复赛」城市网络 (树上倍增)

    #6192. 「美团 CodeM 复赛」城市网络 内存限制:64 MiB 时间限制:500 ms 标准输入输出   题目描述 有一个树状的城市网络(即 nnn 个城市由 n−1n-1n−1 条道路连接 ...

  5. LibreOJ #6192. 「美团 CodeM 复赛」城市网络

    #6192. 「美团 CodeM 复赛」城市网络 内存限制:64 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: sqc 提交提交记录统计讨论测试数据   题目描 ...

  6. 「美团 CodeM 复赛」城市网络

    题目链接 题意分析 首先 \([u,v]\)在树上是一条深度递增的链 那么我们可以使用倍增找 \(x\)的祖先当中深度最大的值大于\(x\)的点 然后维护一个\(pre\) 重新建树 这样从\(x\) ...

  7. 美团 CodeM 复赛」城市网络

    美团 CodeM 复赛」城市网络 内存限制:64 MiB时间限制:500 ms标准输入输出 题目描述 有一个树状的城市网络(即 nnn 个城市由 n−1n-1n−1 条道路连接的连通图),首都为 11 ...

  8. [LOJ 6213]「美团 CodeM 决赛」radar

    [LOJ 6213]「美团 CodeM 决赛」radar 题意 给定 \(n\) 个横坐标 \(x_i\) , 为它们选择一个不超过 \(y_i\) 的纵坐标 \(h_i\), 产生 \(c_ih_i ...

  9. LibreOJ #6212. 「美团 CodeM 决赛」melon

    二次联通门 : LibreOJ #6212. 「美团 CodeM 决赛」melon /* LibreOJ #6212. 「美团 CodeM 决赛」melon MDZZ 这是决赛题?? */ #incl ...

随机推荐

  1. windows的cmd和git bash的常用命令

    windows下使用git bash,使用的事linux下的命令,整理常用命令如下: windows下的命令 linux下的命令 命令的含义 cd e:\xx cd /e/xx 切换到xx目录 cd ...

  2. red5 重新分配 ip

    root@hett-OptiPlex-7040:~# ll /usr/local/src/red5/conf/total 144drwxr-xr-x 2 root root  4096  1月  9 ...

  3. 数学题 HDOJ——2086 简单归纳

    哎 真的是懒得动脑子还是怎么滴... 题目如下 Problem Description 有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).若给 ...

  4. bfs染色法判定二分图

    #include<iostream> #include<queue> #include<cstring> #include<cstdio> using ...

  5. Robot Framework(十二) 执行测试用例——配置执行

    3.4配置执行 本节介绍可用于配置测试执行或后处理输出的不同命令行选项.与生成的输出文件相关的选项将在下一节中讨论. 3.4.1选择测试用例 通过测试套件和测试用例名称 按标签名称 当没有测试匹配选择 ...

  6. 2017年网络空间安全技术大赛部分writeup

    作为一个bin小子,这次一个bin都没做出来,我很羞愧. 0x00 拯救鲁班七号 具体操作不多说,直接进入反编译源码阶段 可以看到,只要2处的str等于a就可以了,而str是由1处的checkPass ...

  7. Bootstrap历练实例:警告样式按钮

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  8. oracle row_number的使用

    create table studentInfo(  id number(8) primary key,  name varchar2(20) not null,  ObjectName varcha ...

  9. 【OS_Linux】Linux系统中目录及文件管理

    1.Linux系统中目录的树状结构 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里. /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录, ...

  10. verilog disable 用法 (易错!)

    disable语句可以退出任何循环,能够终止任何begin..end块的执行,用于仿真验证中. 例如 begin:one ;i<;i=i+) begin:two ) disable one; / ...