HDU 5984(求木棒切割期望 数学)
题意是给定一长为 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(求木棒切割期望 数学)的更多相关文章
- hdu 3232 Crossing Rivers(期望 + 数学推导 + 分类讨论,水题不水)
Problem Description You live in a village but work in another village. You decided to follow the s ...
- HDU 5984 数学期望
对长为L的棒子随机取一点分割两部分,抛弃左边一部分,重复过程,直到长度小于d,问操作次数的期望. 区域赛的题,比较基础的概率论,我记得教材上有道很像的题,对1/len积分,$ln(L)-ln(d)+1 ...
- HDU 5984.Pocky(2016 CCPC 青岛 C)
Pocky Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decora ...
- C++算法之旅、02 从木棒切割问题领悟二分法精髓
172.木棒切割问题 https://sunnywhy.com/problem/172 题目描述 给出n根木棒的长度,现在希望通过切割它们来得到至少k段长度相等的木棒(长度必须是整数),问这些长度相等 ...
- HDU 5984 题解 数学推导 期望
Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decorative s ...
- HDU 6362(求椭圆中矩形周长的期望 数学)
题意是给定一个椭圆标准方程的a,b(椭圆的长半轴长和短半轴长),在[0,b]内取一个数,则过点(0,b)且平行于x轴的直线与椭圆交于两点,再将此两点关于x轴做对称点,顺次连接此四点构成矩形,求出这些矩 ...
- hdu 4465 求期望(C(m,n)太大用log优化)
/* 坑啊 数学函数的运用log处理,exp还原 tle好长时间,一直用g++交,最后把别人正确的代码交上也是tle,用c++交一遍ac 题意:有两个数量为n的糖果,一个人开始吃,吃到最后有一堆剩余为 ...
- HDU 5570 balls 期望 数学
balls Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5570 De ...
- HDU 4586 Play the Dice(数学期望)
Play the Dice Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
随机推荐
- 记录Nginx模块开发
--with-http_stub_status_module模块:Nginx的客户端状态 Syntax:stub_status Default:-- Content:server,location l ...
- Angular创建路由从主界面跳转到我们的cesium界面
我们要在一个独立的顶级模块中加载和配置路由器,它专注于路由功能,然后由根模块 AppModule 导入它. 按照惯例,这个模块类的名字叫做 APPRoutingModule,并且位于 src/app ...
- HO6 Condo Insurance Policy
The HO6 insurance Policy is the most common type of policy used to insure town homes and condos in t ...
- vi命令下常用命令
dd:删除游标所在的一整行(常用)ndd:n为数字.删除光标所在的向下n行,例如20dd则是删除光标所在的向下20行d1G:删除光标所在到第一行的所有数据dG:删除光标所在到最后一行的所有数据d$:删 ...
- 【Teradata SQL】FALLBACK表改为NO FALLBACK表
FALLBACK表在数据库中会留存双份数据,增加了数据可用性,但浪费了存储空间.变更表属性语句如下: alter table tab_fallback ,no fallback;
- 【Teradata UDF】中文按字符查找chs_instr
一.场景描述 数据库为ASCII编码单字节存储,在查询中文时可能会出现错误结果.例如查询like“房”字,会查询出不含“房”,含“朔科”的结果. select * from Tablename01 w ...
- audio
// media.cpp : 定义控制台应用程序的入口点. // https://wenku.baidu.com/view/e910c474c5da50e2524d7fb4.html https:// ...
- Autofs自动挂载探讨
Autofs介绍: mount是用来挂载文件系统的,可以在系统启动的时候挂载也可以在系统启动后挂载.对于本地固定设 备,如硬盘可以使用mount挂载:而光盘.软盘.NFS.SMB等文件系统具有动态性, ...
- Lepus搭建企业级数据库慢查询分析平台
前言 Lepus的慢查询分析平台是独立于监控系统的模块,该功能需要使用percona-toolkit工具来采集和记录慢查询日志,并且需要部署一个我们提供的shell脚本来进行数据采集.该脚本会自动开启 ...
- .NET 开源项目 Anet 介绍
使用 Anet 有一段时间了,已经在我的个人网站(如 bookist.cc)投入使用,目前没有发现什么大问题,所以才敢写篇文章向大家介绍. GitHub 地址:https://github.com/a ...