传送门


题解:

模拟赛考场花了半个小时推出来了,纯数学题。。。。

实际上不是那么难想,只要注意细节。

首先考虑给Bob,问Alice的情况。

已知Bob,询问Alice

先给一个结论,Bob的结果就是Alice的期望。

假设我们并不知道上面那个结论,来推一下Bob在飞了一个2l2^l2l的情况下经过的塔的个数(算尾不算头)。

在这种情况下需要认为左端点高度是已经确定了的。

设P(i)P(i)P(i)表示一个塔的高度不超过iii的概率,则P(i)=12+122+⋯+12i=1−12iP(i)=\frac{1}{2}+\frac{1}{2^2}+\cdots +\frac{1}{2^i}=1-\frac{1}{2^i}P(i)=21​+221​+⋯+2i1​=1−2i1​

这时候要求右边的塔的高度超过lll,概率为1−P(l)1-P(l)1−P(l),中间所有塔的高度都不超过lll,概率为P(l)iP(l)^iP(l)i,其中iii是中间塔的个数。

得到期望的表达式为E(l)=(1−P(l))∑i=1∞i⋅P(l)i−1E(l)=(1-P(l))\sum_{i=1}^{\infty}i\cdot P(l)^{i-1}E(l)=(1−P(l))i=1∑∞​i⋅P(l)i−1

化简得到E(l)=2lE(l)=2^lE(l)=2l。所以Bob的结果就是Alice的期望。

已知Alice,询问Bob

考虑一点一点增加hhh,显然新的滑索只会覆盖上一层的滑索,我们计算新增的概率和数量的期望以及覆盖上一层滑索的期望数量即可。

初始状态h=0h=0h=0,这时候答案为nnn

显然对于这一层每一个滑索的出现情况互不影响可以分别计算。

假设出现了一个高度为hhh,长度为lll的滑索,则它可能的开头只有n−ln-ln−l个。

两边高度必须大于hhh,概率为122h\frac{1}{2^{2h}}22h1​,中间所有的必须小于等于hhh,概率为(1−12h)l−1(1-\frac{1}{2^h})^{l-1}(1−2h1​)l−1

那么这个滑索的期望贡献就是它出现的贡献乘上出现概率。

还要减掉上一层被覆盖的滑索的贡献。

也就是要算期望覆盖了多少个上一层的滑索。

也就是中间期望有多少个塔高度为hhh,然后+1就是滑索的数量。

一个塔的高度为hhh的概率在这种情况是一个条件概率,为12h12+122+⋯12h=12h−1\frac{\frac{1}{2^h}}{\frac{1}{2}+\frac{1}{2^2}+\cdots \frac{1}{2^h}}=\frac{1}{2^h-1}21​+221​+⋯2h1​2h1​​=2h−11​

那么期望有l−12h−1\frac{l-1}{2^h-1}2h−1l−1​座塔高度为hhh,可以直接算了。

具体式子直接看代码吧。


代码:

#include<bits/stdc++.h>
#define ll long long
#define re register
#define cs constusing std::cerr;
using std::cout;
typedef long double ld;inline ld power(ld a,int b,ld res=1){for(;b;b>>=1,a=a*a)(b&1)&&(res=res*a);return res;
}int n,h;
double pw[100];
signed main(){#ifdef zxyoifreopen("counting.in","r",stdin);
#else
#ifndef ONLINE_JUDGEfreopen("counting.in","r",stdin);freopen("counting.out","w",stdout);
#endif
#endifstd::string name;std::cin>>name>>n>>h;if(name=="Bob")cout<<n<<".000000000";//结论相当SB。。。 //本质就是考虑 Bob 每走一个 2^l 经过的长度(算尾不算头)的期望就是 2^l else {//注意到Bob走的高度一定是先增加再减少。 //考虑增加高度上限从1增加到h的时候,新一层的贡献,同时减掉原来覆盖了的贡献。//显然覆盖了的贡献只可能是上一层的,这一层覆盖一定覆盖了中间一段,枚举这个长度,算一下这中间有期望多少个上一段。 pw[0]=1;ld ans=n;for(int re i=1;i<=2*h;++i)pw[i]=pw[i-1]*2;for(int re i=1;i<=h;++i)for(int re j=1;j<=n;++j){ans+=(n-j)/pw[i<<1]*power(1-1/pw[i],j-1)*(pw[i]-pw[i-1]*(1+(j-1)/(pw[i]-1)));}printf("%.9f\n",(double)ans);} return 0;
}

【CF335E】 Counting Skyscrapers(期望)相关推荐

  1. 解读Cardinality Estimation算法(第二部分:Linear Counting)

    在上一篇文章中,我们知道传统的精确基数计数算法在数据量大时会存在一定瓶颈,瓶颈主要来自于数据结构合并和内存使用两个方面.因此出现了很多基数估计的概率算法,这些算法虽然计算出的结果不是精确的,但误差可控 ...

  2. 长路漫漫,唯剑作伴--Automatic Reference Counting

    一.引用计数 在OC中,对象什么时候会被释放? 答案是当对象没有被任何变量引用(也可以说是没有指针指向该对象)的时候,就会被释放. 怎么知道对象已经没有被引用了呢? OC采用引用计数(referenc ...

  3. 【期望】关灯游戏(金牌导航 期望-8)

    关灯游戏 金牌导航 期望-8 题目大意 有n盏灯,有些是亮的,有的是暗的,现在如果按一个位置的开关,那么是它因数的位置的灯都会改变开关情况,现在如果用k步不能直接关完,就随机按,直到可以k步关完,就用 ...

  4. 《算法竞赛进阶指南》数论篇(3)-组合计数,Lucas定理,Catalan数列,容斥原理,莫比乌斯反演,概率与数学期望,博弈论之SG函数

    文章目录 组合计数 例题:Counting swaps Lucas定理 Cnm≡Cnmodpmmodp∗Cn/pm/p(modp)C_n^m\equiv C_{n\ mod\ p}^{m\ mod\ ...

  5. [NOI2005]聪聪与可可(期望dp)

    题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间. Solution luog ...

  6. 洛谷P4316 绿豆蛙的归宿(期望)

    题意翻译 「Poetize3」 题目背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出 ...

  7. LightOJ - 1038 Race to 1 Again 基础期望概率 dp

    传送门 刚刚学习期望&概率 我们设数X的期望改变次数为P[X] 如果要求X的期望,很容易想到找x的因子; 可以得到下式  ,cnt为X因子个数,ai为X的因子 可以这么理解,当因子ai为1时, ...

  8. 强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例----Sarsa算法, Q学习, 期望Sarsa算法

    强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例 5.1 TD预测 例5.1 回家时间的估计 5.2 TD预测方法的优势 例5.2 随机移动 5.3 ...

  9. 强化学习(一)- 强化学习介绍、Markov决策过程和贝尔曼期望方程

    强化学习(英语:Reinforcement learning,简称RL)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益.其灵感来源于心理学中的行为主义理论,即有机体如何在环境给 ...

  10. nyoj——297(期望)

    GoroSort 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 Goro has 4 arms. Goro is very strong. You don't mess ...

最新文章

  1. 发掘数据中的信息 -- 数据探索之描述性统计
  2. 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)
  3. 201621123085 《Java程序设计》第2周学习总结
  4. 危险的两个函数GetCurrentDirectory和GetParent
  5. linux 下 安装 node.js 详细步骤
  6. Vuex mutations的详细解读
  7. linux上使用wget下载文件
  8. 【短语学习】True(False) Positives (Negatives) 的含义和翻译
  9. 转转首席架构师 孙玄:如何成为一个有情怀的工程师?
  10. 今年-计划写一本java方面的书籍-初稿正式完成
  11. Python数据分析-google play store的app数据分析
  12. 软件配置管理中基线(baseline)
  13. php theexcerpt,WordPress:使用the_excerpt函数显示摘要信息
  14. php客流量统计,智慧店铺客流量统计系统
  15. 知识图谱论文阅读(十三)【2020 arXiv】Attentive Knowledge Graph Embedding for Personalized Recommendation
  16. Python下载网易云音乐(云音乐飙升榜)
  17. 用样本推断整体,中心极限定理及其一些前提条件
  18. EMMC 擦除组的理解
  19. Java-SpringBoot-使用Sigar采集设备信息
  20. 得到《三体》听书笔记

热门文章

  1. 配置管理之三类配置库
  2. 计算机网络设计大赛总结,计算机技能大赛总结#.doc
  3. 汉语拼音音节的歧义指数
  4. python拦截广告弹窗_电脑总是有弹窗广告,真的烦人,一招教你解决!
  5. 【CSS3】模拟太阳系八大行星运行轨迹
  6. Scrum板与Kanban如何抉择?kdliihoap板与按照xhvrcr
  7. 安装虚拟机后无法获取 vmci 驱动程序版本句柄无效解决方法!
  8. 三菱凌云3故障代码_三菱.凌云故障代码
  9. Unity 2D Animation(2D动画)学习
  10. 国内IT界5大女神程序员,你知道几个