[Codeforces335E]Counting Skyscrapers(概率期望+数学证明)
来源:互联网 发布:p2p种子搜索器源码 编辑:程序博客网 时间:2024/05/17 14:20
=== ===
这里放传送门
=== ===
题解
这题神死了。。。ATP想把那个在CF上强行加上【DP】这个tag的人吃掉。。。一开始吭哧了半天想了一个
还有,Bob这个人P事真TM多。。。。【(╯‵□′)╯︵┻━┻】
把CF的官方题解和翻译先链过来。果然还是中文看起来舒爽。。。那ATP这里就把题解上没有说的证明一点一点证一下吧。。。
首先这个题看起来是强行二合一实际上并没有。。因为可以证明如果给的是Bob的计数器,那么直接把N输出来就可以了。。因为如果Bob的计数器累加了
这是为什么呢。。首先我们可以发现Bob每次经过一条溜索的时候,它实际上经过的楼的数量应该包括【溜索下方那些高度较小的楼】还有【作为他终点的那栋楼】。也就是说,如果他实际上经过的楼数目是
设当前它的计数器累加了
那么我们分情况讨论,它经过的楼层数目的期望应该是
然后我们就可以算Bob经过楼层数目的期望了,它是:
把
用底下的减去上面的,得到:
两边能够约掉一个
话说
Bob只是小杂鱼。。真正的Boss其实是Alice qwq。。。
搞定Alice的基本思路是先假设所有的楼都只有1层,也就是它们的编号都是0;那这样的话Bob的计数器肯定只能是
我们一层一层把楼加高,对于新加入的编号能够达到
这两个显然是补集关系,算了一个就能算另一个。那么我们就算中间每一座塔的高度小于
(和上面是一样的嘿嘿嘿)
那么两边的塔的高度都不小于
那么如果已经知道存在这样一条连接两个编号为
注意这里的计算有一个条件就是已经确定了中间这
于是我们可以得到中间被覆盖的旧溜索数目的期望:
而由于塔的高度的随机性,这里的
至此终于把Alice搞定辣!这个式子用好在出题人的良心还剩下了那么一点点
代码
话说那一坨式子写出来好恶心啊
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char w[10];int N,H;double ans,bin[60010];double powww(double a,int t){ double ans=1; while (t!=0){ if (t&1) ans=ans*a; a=a*a;t>>=1; } return ans;}int main(){ scanf("%s",w); scanf("%d%d",&N,&H); if (w[0]=='B'){ printf("%.10lf\n",(double)N); return 0; } ans=N;bin[0]=1; for (int i=1;i<=2*H;i++) bin[i]=bin[i-1]*0.5; for (int i=1;i<=H;i++) for (int j=1;j<=N;j++){ double tmp=N-j; tmp=tmp*bin[2*i]*powww(1-bin[i],j-1)*(1/bin[i]-1/bin[i-1]*(1+(double)(j-1)/(1/bin[i]-1))); ans+=tmp; } printf("%.10lf\n",ans); return 0;}
偏偏在最后出现的补充说明
化式子这东西好神奇啊
把它化得它妈妈都不认识它了然后竟然能算出正确的结果来哈哈哈哈
- [Codeforces335E]Counting Skyscrapers(概率期望+数学证明)
- [Codeforces335E]Counting Skyscrapers(概率期望)
- codeforces 335E. Counting Skyscrapers (概率与期望)
- 概率与数学期望
- CF335E Counting Skyscrapers
- LightOJ1030(数学概率与期望)
- lightoj1038(数学概率与期望)
- lightoj1079(数学概率与期望)
- lightoj1104(数学概率与期望)
- lightoj1027(数学期望与概率)
- LightOJ1408(数学期望与概率)
- lightoj1274(数学概率与期望)
- lightoj1284(数学概率与期望)
- uva11427(数学概率与期望)
- 面试中的概率题-数学期望(1)
- HDU 4518 Play the Dice(数学 概率 期望)
- ZOJ3329-One Person Game(概率DP求数学期望)
- Skyscrapers 组合数学
- 机器学习--朴素贝叶斯分类
- JSP 简介
- 扩展iServer实现坐标投影转换
- 天律的云端大数据分析挖掘之旅
- 使用 xtrabackup 进行MySQL数据库物理备份
- [Codeforces335E]Counting Skyscrapers(概率期望+数学证明)
- 整数算术运算
- 2017_ZCTF_Reverse_QEtend
- 使用JDBC访问Hive
- liunx中xchm打不开api帮助文档
- mysql存储引擎概述
- MaxCompute计算长尾问题
- 转载_结构体中四字节对齐的详解
- 初学Python--微信自动回复信息以及防撤回