【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 ...
随机推荐
- SQL简单查询后续记录
--首先创建数据库TEST CREATE DATABASE TEST --创建表tb_user USE TEST CREATE TABLE [tb_user]( [name] [nvarchar] ( ...
- sql server 2008怎么设置不允许windows身份验证
- 基于51单片机个LCD1602的万年历程序
小白 第一次跟新博客 基于51单片机和LCD1602的万年历程序 可实现走时和调时功能 有简单的1602菜单制作 欢迎大家交流 LCD1602和51单片机的连接方法 RS = P3^5; //数据/命 ...
- windows10 下安装、配置、启动mysql
下载mysql 可以自行去百度 或者 https://dev.mysql.com/downloads/mysql/5.7.html#downloads 解压mysql-5.7.26-winx64.zi ...
- k8s master init and add node
目录 一. add google apt-key 二. k8s master init 三. k8s node add to master cluster(use this command when ...
- iCheck获取单选和复选框的值和文本
//获取单选和复选框的值//parameters.type:"radio","checkbox"//parameters.name:input-name//pa ...
- apache 报413
http://www.hostlift.com/apache/modsecurity-request-body-content-length-is-larger-than-the-configured ...
- iOS面试集锦3
1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEnco ...
- OS复习
提纲 一 操作系统的定义,各章节名词定义. 分时多道- OS四大特征,五大功能. 二 进程 创建终止挂起激活 PCB 原语:创建终止挂起激活唤醒 互斥和同步,临界资源,临界区 信号量的基础概念,受保护 ...
- 初涉倍增&&LCA【在更】
一种特殊的枚举算法 什么是倍增 顾名思义,即每一次翻倍增加.那么,这样我们就有了一种$O(logn)$阶的方法处理枚举方面的问题了. 参考:[白话系列]倍增算法 一些题目 [倍增]luoguP1613 ...