题意是给定一长为 L 的木棒,每次任意切去一部分直到剩余部分的长度不超过 D,求切割次数的期望。

若木棒初始长度不超过 D,则期望是 0.000000;

设切割长度为 X 的木棒切割次数的期望是 F(X).

则 F(X) = F(切割点位置为 0 ~ D) + F(切割点位置为 D ~ X ) + 1;(此处的 +1 是指首次切割产生的次数)

而 F(切割点位置为 0 ~ D ) = 0;(因为已无需再切割)

令下一次切割点的位置为 T,

F(切割点位置为 D ~ X ) = 在D~X上积分 ( 1 / X ) * F( T ) dT ;(在长度为 X 的木棒上选择到任何一点切割的概率为 1 / X)

F( X ) = F(切割点位置为 0 ~ D) + F(切割点位置为 D ~ X ) + 1 = 0 + 在D~X上积分 ( 1 / X ) * F( T ) dT + 1

两边求导:F‘( X ) = - ( 1 / X² ) * ∫ F( T ) dT + F( X ) / X;(积分区间均为 D ~ X)

又: F( X ) = ∫ ( 1 / X ) * F( T ) dT + 1

得:  - ( 1 / X² ) * ∫ F( T ) dT = ∫ ( 1 / X ) * F( T ) dT / ( -1 / X ) = ( F(X) - 1 ) / ( -1 / X )

则: F’( X ) = - ( 1 / X² ) * ∫ F( T ) dT + F( X ) / X = ( F(X) - 1 ) / ( -1 / X ) + F( X ) / X = 1 / X

即: F( X ) = ln( X ) + C ( C为常数 )

由 F( D ) = 1,得:C = 1 - ln( D )

得:F( L ) = ln( L ) + 1 - ln( D ) = log( L / D )  + 1.

代码如下:

 #include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
double l,d;
scanf("%d",&t);
while(t--)
{
scanf("%lf%lf",&l,&d);
if(l<=d) puts("0.000000");
else printf("%.6lf\n",log(l/d)+);
}
return ;
}

感谢这些博客的作者:

https://blog.csdn.net/jay__bryant/article/details/81188557

https://blog.csdn.net/blue_skyrim/article/details/53262572

https://www.cnblogs.com/Yumesenya/p/7657820.html

HDU 5984(求木棒切割期望 数学)的更多相关文章

  1. hdu 3232 Crossing Rivers(期望 + 数学推导 + 分类讨论,水题不水)

    Problem Description   You live in a village but work in another village. You decided to follow the s ...

  2. HDU 5984 数学期望

    对长为L的棒子随机取一点分割两部分,抛弃左边一部分,重复过程,直到长度小于d,问操作次数的期望. 区域赛的题,比较基础的概率论,我记得教材上有道很像的题,对1/len积分,$ln(L)-ln(d)+1 ...

  3. HDU 5984.Pocky(2016 CCPC 青岛 C)

    Pocky Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decora ...

  4. C++算法之旅、02 从木棒切割问题领悟二分法精髓

    172.木棒切割问题 https://sunnywhy.com/problem/172 题目描述 给出n根木棒的长度,现在希望通过切割它们来得到至少k段长度相等的木棒(长度必须是整数),问这些长度相等 ...

  5. HDU 5984 题解 数学推导 期望

    Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decorative s ...

  6. HDU 6362(求椭圆中矩形周长的期望 数学)

    题意是给定一个椭圆标准方程的a,b(椭圆的长半轴长和短半轴长),在[0,b]内取一个数,则过点(0,b)且平行于x轴的直线与椭圆交于两点,再将此两点关于x轴做对称点,顺次连接此四点构成矩形,求出这些矩 ...

  7. hdu 4465 求期望(C(m,n)太大用log优化)

    /* 坑啊 数学函数的运用log处理,exp还原 tle好长时间,一直用g++交,最后把别人正确的代码交上也是tle,用c++交一遍ac 题意:有两个数量为n的糖果,一个人开始吃,吃到最后有一堆剩余为 ...

  8. HDU 5570 balls 期望 数学

    balls Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5570 De ...

  9. HDU 4586 Play the Dice(数学期望)

    Play the Dice Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

随机推荐

  1. Win10 Service'MongoDB Server' failed to start. Verify that you have sufficient privileges to start system services【简记】

    最近工作中有需要用到 MongoDB数据库,以前用的3.*的版本,这次用的是较新4.0.6的版本,然后去官网下载安装. 安装到一半,就弹出如下提示,说是"MongoDB Server&quo ...

  2. Python开发【前端篇】HTML

    1.html概述和基本结构 html概述 HTML是 HyperText Mark-up Language 的首字母简写,意思是超文本标记语言,超文本指的是超链接,标记指的是标签,是一种用来制作网页的 ...

  3. ideal中项目resources下txt文件读取不到的问题。

    这次做项目,原来用到了一个txt文件,在ideal中项目启动后报读取不到txt文件.项目原来是在eclipse中的. 在网上找了些文章,发现ideal中要读取到resources下的文件需要加上下面红 ...

  4. python之函数对象、函数嵌套、名称空间与作用域、装饰器

    一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if de ...

  5. Django-CRM项目学习(四)-stark的分页器与搜索框

    1.分页器 分页器相关知识点,请查看以下链接 https://www.cnblogs.com/gbq-dog/p/10724859.html 2.代码归类 归类前代码 header_list = [] ...

  6. private,protected,public和default的区别

    private,protected,public和default的区别 除了default以外,其他都是Java语言的关键字.default代表的是对类成员没有进行修饰的情况.它本身也代表了一种访问控 ...

  7. PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required

    今天在使用jetty运行一个项目的时候报这个错误,仔细看了下,应该是eclipse配置的jdk或者jre出错. 看了下环境变量,发现有些配置没有配置完全. 我个人的解决方法: 在path中,添加%JA ...

  8. Bootstrap开发框架视频整理

    最近到客户处进行实地培训,整理了很多培训的材料,现将它们录制相关主题的视频,作为我的Bootstrap开发框架的知识补充,希望给感兴趣的朋友进行了解.培训内容主要包括基础框架部分.MVC框架部分.Bo ...

  9. 安装VM-tools

    win10系统 VMware12 Ubuntu64位安装VM-tools时所遇到的提示信息: open-vm-tools are available from the OS vendor and VM ...

  10. 【转】shell脚本中如何传入参数

    (1)直接用$1,$2取传入的参数vim /root/test.sh#!/bin/bashif [ $1 == "start" ]  then     echo "do ...