【loj6191】「美团 CodeM 复赛」配对游戏
显然期望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 复赛」配对游戏的更多相关文章
- LibreOJ #6191. 「美团 CodeM 复赛」配对游戏
二次联通门 : LibreOJ #6191. 「美团 CodeM 复赛」配对游戏 /* LibreOJ #6191. 「美团 CodeM 复赛」配对游戏 概率dp */ #include <cs ...
- 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp
题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...
- loj #6191. 「美团 CodeM 复赛」配对游戏 期望dp
题意:有一个栈,随机插入 $n$ 次 $0$/$1$ 如果栈顶是 $1$,然后插入 $0$,则将这两个元素都弹出,否则,插入栈顶. 求:$n$ 次操作后栈中期望的元素个数. 我们发现,按照上述弹栈方式 ...
- LOJ #6192. 「美团 CodeM 复赛」城市网络 (树上倍增)
#6192. 「美团 CodeM 复赛」城市网络 内存限制:64 MiB 时间限制:500 ms 标准输入输出 题目描述 有一个树状的城市网络(即 nnn 个城市由 n−1n-1n−1 条道路连接 ...
- LibreOJ #6192. 「美团 CodeM 复赛」城市网络
#6192. 「美团 CodeM 复赛」城市网络 内存限制:64 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: sqc 提交提交记录统计讨论测试数据 题目描 ...
- 「美团 CodeM 复赛」城市网络
题目链接 题意分析 首先 \([u,v]\)在树上是一条深度递增的链 那么我们可以使用倍增找 \(x\)的祖先当中深度最大的值大于\(x\)的点 然后维护一个\(pre\) 重新建树 这样从\(x\) ...
- 美团 CodeM 复赛」城市网络
美团 CodeM 复赛」城市网络 内存限制:64 MiB时间限制:500 ms标准输入输出 题目描述 有一个树状的城市网络(即 nnn 个城市由 n−1n-1n−1 条道路连接的连通图),首都为 11 ...
- [LOJ 6213]「美团 CodeM 决赛」radar
[LOJ 6213]「美团 CodeM 决赛」radar 题意 给定 \(n\) 个横坐标 \(x_i\) , 为它们选择一个不超过 \(y_i\) 的纵坐标 \(h_i\), 产生 \(c_ih_i ...
- LibreOJ #6212. 「美团 CodeM 决赛」melon
二次联通门 : LibreOJ #6212. 「美团 CodeM 决赛」melon /* LibreOJ #6212. 「美团 CodeM 决赛」melon MDZZ 这是决赛题?? */ #incl ...
随机推荐
- Eclipse Java类编辑器里出现乱码的解决方案
如图:在Java Class编辑器里出现的这种乱码,非常烦人. 解决方案:Windows->Preference->General->Appearance, 在里面将Theme设置成 ...
- canvas 在视频中的用法
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- python读取.mat文件
可以先看一下.mat中存了些什么: import scipy.io as sio box_file = '/home/bnrc/formatm/test/1479504458876408533_box ...
- python_108_格式化字符串format函数
#通过关键字映射 print('I am {name},age {age}'.format(name='qiqi齐',age=18))#I am qiqi齐,age 18 dictory={'name ...
- ubuntu 升级到5.1kernel,打开bbr
apt-get -f install wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.1/linux-headers-5.1.0-0 ...
- Bootstrap 静态控件
当您需要在一个水平表单内表单标签后放置纯文本时,请在 <p> 上使用 class .form-control-static. 实例: <!DOCTYPE html><ht ...
- PHP获取文件后缀的7中方法
在日常的工作当中我们避免不了要经常获取文件的后缀名,今天我就整理了一下7种获取文件后缀的方法,希望对大家有所帮助. $url = 'http://www.baidu.com/uploads/20185 ...
- (56)zabbix Screens视图配置
screen翻译成中文为“屏幕”,在超市.单位等等地方都比较常见到监控视频,视频上有多块小视频,实际上zabbix screen和这个功能类似.你可以设置多个screen,每个screen可以显示特定 ...
- (转)编写高质量的OC代码
点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问,其他的情况使用方括号标记语法. 良好的风格: view.backgroundColor = [UIColor or ...
- 对freescale的mfgtool的ucl2.xml的理解
转载于此:http://blog.csdn.net/bugouyonggan/article/details/8664898 对于Freescale MFG编程工具控制文件ucl2.xml的分析 为了 ...