博客目录

一、原题

原题传送门(vjudge)

原题传送门(杭电原题)

Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decorative stripes in the coating, of length L. 
While the length of remaining pocky is longer than d, we perform the following procedure. We break the pocky at any point on it in an equal possibility and this will divide the remaining pocky into two parts. Take the left part and eat it. When it is not longer than d, we do not repeat this procedure. 
Now we want to know the expected number of times we should repeat the procedure above. Round it to 6 decimal places behind the decimal point.

InputThe first line of input contains an integer N which is the number of test cases. Each of the N lines contains two float-numbers L and d respectively with at most 5 decimal places behind the decimal point where 1 ≤ d, L ≤ 150. 
OutputFor each test case, output the expected number of times rounded to 6 decimal places behind the decimal point in a line.Sample Input

6
1.0 1.0
2.0 1.0
4.0 1.0
8.0 1.0
16.0 1.0
7.00 3.00

Sample Output

0.000000
1.693147
2.386294
3.079442
3.772589
1.847298

二、题目大意

一根面条横着放,等概率地从中选取一个点,吃掉左边部分,然后再选再吃。直到剩下的部分小于等于b就停止,问吃的次数的期望。

三、分析

实战的方法:  重现赛时根据样例猜公式,一看小数位数跟lnx有关,凑一凑公式就出来了。

正儿八经的做法:  事后查资料推公式:

网上为数不多的题解都是猜出来的公式,复习了一下概率论自己推导了好久都没弄出来,直到看到这个 传送门 大神的博客,然后现自己总结一下:

根据概率论的知识:期望=∑(子事件发生的概率*子事件贡献的期望) 。而对于连续模型来讲,求和就是积分。

设长度为x的面条,所期望的次数为f(x),画个t轴:0———b————————x   ----->t的面条(凑合看吧,其中t为坐标)

当x<=b(我也忘了有没有等号了,自己去读题吧这里对公式没影响)。f(x)=0(长度小于等于n时一次也不用吃就停下了)

当x>b时,设t为0~x上的坐标值,表示吃掉t~x上的面条,自然剩下的面条就是0~t,即吃掉剩下的面条次数期望为f(t)

然后高等数学上的知识:对于dt表示很小的线元,点落到dt上的概率为dt/x,也就是线元长度/总长度。dt上贡献的期望为(因为dt很小可以看成一个点,高等数学的知识):从0到dt的长度为t,所以吃掉右边的剩下左边的长度为t,所以期望为f(t)。

然后将b~a上所有的线元dt贡献的期望加起来(即积分):∫(b到x) f(t)*(dt/x),x与积分无关可以提出来写到积分号外面。

所以总的e=f(x)为:     (其中0到d上贡献的期望为0).

接下来就是求解f(x)了,

  • 比较浅显的:思路一:

两边乘一个x,然后方程两边对x求导,积分号正好是一个原函数形式,一求导就把积分号去掉了,就变成了一个一阶微分方程,然后解方程。(早就忘了微分方程咋解了,要记得考虑+常数c)

  • 比较巧妙的:思路二:

等式两边直接求导,方程左边暂时变为导数,着重处理右边:

常数求导变为0,分数用求导公式,求导后分子上依然有积分符号(请大家自行笔算一下,就不花心思贴图了),积分符号还存在,我们利用原始的式子处理积分符号:将这个式子解出来积分符号,然后代入上求导后的式子,消掉积分符号之后,发现也正好可以消掉等式右边的跟f(x)有关的部分,最终得出f '(x)=

然后根据不定积分:f(x)=lnx+c

找个特解(本题跟b跟n都有关的特例,很显然就是n=b的情况) f(d) = ln(d) + C = 1,c=1-ln(d),然后就把c求出来了。

最终:

解毕。

四、AC代码

照着公式一写就过了,记得考虑n<=d的情况和保留的小数位数,不想去翻之前的代码了。

当n>b时

ln(n)-ln(b)

当n<=b时

0.000000

概率——2016青岛icpc区域赛 C - Pocky HDU - 5984 公式推导相关推荐

  1. 伊朗 2018 ICPC区域赛 A : Iranian ChamPions Cup

    题目描述 The Iranian ChamPions Cup (ICPC), the most prestigious football league in Iran, is reaching its ...

  2. (每日一题)2016 北京ICPC网络赛G hihocoder 1388 (中国剩余定理 + NTT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://vjudge.net/problem/HihoCoder-1388 P ...

  3. 第 45 届ICPC区域赛(南京)记录

    题在这里 K - Co-prime Permutation 题意:让你从1~n的数字序列中,选出每一个数字放到一个位置i使得gcd(a[i],i) = 1. 解:相邻的数字互质,故将需要gcd(a[i ...

  4. 2021acm-icpc区域赛(南京)补题笔记

    文章目录 前言 题目一览 A.Oops, It's Yesterday Twice More(签到) 题意 思路 M. Windblume Festival(签到) 题意 思路 C. Klee in ...

  5. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

  6. 2018年 ACM/ICPC亚洲区域赛 青岛赛区现场赛 比赛总结

    首先祝贺自己收获了ACM生涯中的第二枚铜牌. 首先吐槽一下中石油: 周六早上来到中国石油大学,连个志愿者小姐姐都没看到.(但是看到了女装大佬).报完到之后发现教练少了一张午餐券(要不要这么粗心).为了 ...

  7. 2018ACM-ICPC国际大学生程序设计竞赛亚洲区域赛(青岛站)赛后总结

    这是今年最后一次打铁,我已经打了一年的铁了. 还是想写一个总结,不然,什么都会没留下. 实际上在去青岛之前,我已经一个月都没有严格地训练自己了,从9月份CCPC秦皇岛站打铁之后,我就基本上开始怀疑自己 ...

  8. 第一次参加区域赛之旅——2016 ACM/ICPC 大连站 感想

    一 . 来的路上     说到行程简直是一把鼻涕一把泪.学校不报销卧铺,只能坐硬座,而且没有直达车,所以还要在北京转车.30多个小时啊-- 二 . 旅游     说实话,对于我们三个弱鸡来说对于这次比 ...

  9. 2017年第42届ACM-ICPC亚洲区域赛青岛赛区(现场赛)

    比赛:第42届ACM-ICPC 亚洲区域赛青岛站 比赛地点:中国石油大学体育馆一楼 时间:2017-11-4 到 2017-11-5 正式比赛时间:2017-11-5 上午九点到下午两点 AC题目: ...

最新文章

  1. 第四节 RabbitMQ在C#端的应用-客户端连接
  2. 文件中数组的最大值及其对应的最小下标
  3. 【机器视觉】 dev_map_var算子
  4. 关于Renderscript的理解
  5. POJ 3660 Cow Contest
  6. 前端学习(2226):react之状态
  7. 用于检测敏感词的 PHP 扩展
  8. OpenSessionInViewFilter 对 lazy 加载 的配置及作用
  9. 第二十三篇:在SOUI中使用LUA脚本开发界面
  10. CentOS更改yum源与更新系统
  11. Python 数据结构 树
  12. List集合之CopyOnWriteArrayList
  13. python开源项目之五子棋
  14. Ant Design Pro -- 02项目结构@20210331
  15. vim的设置文档【我的】
  16. 华为OD机试(A、B卷)、机考,200分的题目整理如下,冲满分必备
  17. rtx和gtx区别_gtx和rtx显卡哪个好
  18. Excel 拆分 分割 数据 (对数据进行分列)
  19. 学波尔还是学王励勤?-----再谈正手弧圈的重心转移
  20. 20175227张雪莹 2018-2019-2 《Java程序设计》第六周学习总结

热门文章

  1. 25.Odoo产品分析 (三) – 人力资源板块(6) – 工资表(1)
  2. 24小时制与12小时制的时间换算
  3. 基于C语言实现图书借阅管理系统
  4. python进阶练习之——复读机相加
  5. 为什么选择Chrome浏览器
  6. 易中天品汉代风云人物05:韩信被杀之谜
  7. pthread实现快速排序
  8. 宜未雨而绸缪,毋临渴而掘井。
  9. Deepin笔记本WIFI速度过慢问题
  10. c语言程序流程控制(下)