题目描述

n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈。问最终栈中元素个数的期望是多少。

输入

一行一个正整数 n 。

输出

一行一个实数,表示期望剩下的人数,四舍五入保留三位小数。

样例输入

10

样例输出

4.168


题解

概率期望dp

显然任何时刻栈中的元素自底至顶一定是若干个0+若干个1。

但是如果设状态$p[i][j][k]$表示前$i$次操作,栈中$j$个0,$k$个1的概率,复杂度是$O(n^3)$的,显然会TLE。

注意到$0$的个数对状态转移是没有影响的,而期望在任何时刻都具有可加性,因此可以设$f[i][j]$表示前$i$次操作,栈中$j$个1的期望元素个数。

那么直接考虑新加入一个是0还是1,看一下长度是增加还是减少即可。

这里有一个问题:每次增加或减少的长度是多少?由于我们设的是总情况的期望,而期望等于 概率*权值 ,这种情况的权值为1,因此期望值就是这种情况的概率。

所以还需要维护一个$p[i][j]$表示前$i$次操作,栈中$j$个1的概率。每次使用概率转移期望即可。

时间复杂度$O(n^2)$

#include <cstdio>
#define N 2010
double p[N][N] , f[N][N];
int main()
{int n , i , j;double ans = 0;scanf("%d" , &n) , p[0][0] = 1;for(i = 0 ; i < n ; i ++ ){p[i + 1][1] += p[i][0] / 2 , f[i + 1][1] += (f[i][0] + p[i][0]) / 2;p[i + 1][0] += p[i][0] / 2 , f[i + 1][0] += (f[i][0] + p[i][0]) / 2;for(j = 1 ; j < n ; j ++ ){p[i + 1][j + 1] += p[i][j] / 2 , f[i + 1][j + 1] += (f[i][j] + p[i][j]) / 2;p[i + 1][j - 1] += p[i][j] / 2 , f[i + 1][j - 1] += (f[i][j] - p[i][j]) / 2;}}for(i = 0 ; i <= n ; i ++ ) ans += f[n][i];printf("%.3lf\n" , ans);return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/7744970.html

【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp相关推荐

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

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

  2. LiberOJ #6210. 「美团 CodeM 决赛」tree 树形DP

    题目链接:点这里 题解: 需要证明,所求的路径一定是全部权值都为1或者,路径上权值至多有一个为2其余为1且权值2在路径中央. 然后树形DP 设定dp[i][0/1] 以1为根的情况下,以i 节点下子树 ...

  3. LOJ#6085. 「美团 CodeM 资格赛」优惠券(set)

    题意 题目链接 Sol 考虑不合法的情况只有两种: 进去了 再次进去 没进去 但是出来了 显然可以用未知记录抵消掉 直接开个set维护一下所有未知记录的位置 最优策略一定是最后一次操作位置的后继 同时 ...

  4. loj 6083.「美团 CodeM 资格赛」数码

    题目: 给定两个整数\(l\)和\(r\),对于任意\(x\),满足\(l\leq x\leq r\),把\(x\)所有约数写下来. 对于每个写下来的数,只保留最高位的那个数码.求\([1,9]\)中 ...

  5. loj 6085.「美团 CodeM 资格赛」优惠券

    题目: 一个有门禁的大楼,初始时里面没有人. 现在有一些人在进出大楼,每个人都有一个唯一的编号.现在有他们进出大楼的记录,但是有些被污染了,只能知道这里有一条记录,具体并不能知道. 一个人只有进大楼, ...

  6. #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队

    #6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...

  7. LibreOJ #6177. 「美团 CodeM 初赛 Round B」送外卖2【状压DP】

    「美团 CodeM 初赛 Round B」送外卖2 内存限制:32 MiB 时间限制:200 ms 题目描述 一 张 n 个 点 m 条 有 向 边 的 图 上 , 有 q 个 配 送 需 求 , 需 ...

  8. 「美团 CodeM 初赛 Round B」送外卖2

    题目描述: 一张n个点m条有向边的图上,有q个配送需求,需求的描述形式为(si,ti,li,ri),即需要从点si送到ti,在时刻li之后(包括li)可以在si领取货物,需要在时刻ri之前(包括ri) ...

  9. 【LOJ6178】 「美团 CodeM 初赛 Round B」景区路线规划 期望概率DP

    题目链接 LOJ 题解 考虑进行Dp,我们设 f[i][j] f [ i ] [ j ] f[i][j]表示到达节点 i i i消耗了j" role="presentation&q ...

最新文章

  1. 网站开发常用jQuery插件总结(15)上传插件blueimp
  2. 蓝桥杯-Anagrams问题(java)
  3. 考oracle ocm,Oracle数据库OCM考试系列教程与总结_OCM考试实验笔记
  4. linux系统做的小游戏,2007最新 100个Linux系统上的小游戏汇集
  5. 最大似然估计【MLE】与最大后验概率【MAP】
  6. Ajax跨域请求与解决方案
  7. Uniform Distribution均匀分布
  8. SAP License:SAP成本收集器两则
  9. set学习(系统的学习)
  10. Windows桌面切换VC代码
  11. android创建Menu菜单
  12. Gstreamer之pts/dts(十九)
  13. 采用Xamarin进行ffmpeg调用视频编解码的方法
  14. 由简入难学习3d机械制图软件顺序?Pro/Engineer 与CREO有何不同。
  15. 如何在Mac电脑上打开终端
  16. iphone帧数测试软件,GFXBench 5.0推出全新测试 苹果A11也只跑17fps
  17. 人体下肢表面肌电,足底压力和关节角度分析
  18. 饱食沪深港澳22日-港:星级传统韩菜-梨花园~110207
  19. 易企秀H5 json配置文件解密分析
  20. IC卡16个扇区简介

热门文章

  1. cv岗工作做什么_职场速递:我应该做什么工作?
  2. go 修改结构体方法_「GCTT 出品」Go 系列教程——26. 结构体取代类
  3. angular js 使用pdf.js_排名靠前的几个JS框架发展趋势和前景
  4. 安卓linux开机画面,Android系统的开机画面显示过程分析(1)
  5. curl命令java_上curl java 模拟http请求
  6. 一不小心就掉大啦《数组使用注意》
  7. C++ 内存基本构件new [] /delete []的意义、内存泄漏原因、VC下cookie的基本布局
  8. 【C++ grammar】nullptr and Dynamic Memory Allocation (空指针和动态内存分配)
  9. Java——集合(模拟斗地主洗牌和发牌进行排序)
  10. 刷recovery工具apk_红米note4X刷lineage,不喜欢miui10广告臃肿的可以试一试