社区讨论

翻译

CF596DWilbur and Trees参与者 4已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mi6o7izv
此快照首次捕获于
2025/11/20 08:05
4 个月前
此快照最后确认于
2025/11/20 08:05
4 个月前
查看原帖
CPP
小猪Wilbor特别想当一只海狸,因此他今天打算扮演一只海狸并把树咬断。

在一条直线上有 n 棵树位于任意位置。第 i 棵树位于 wi。

所有的树都是相同的。换句话说,所有的树高度均为 h。由于风的影响,一棵树被砍倒后有 p 的几率向左倒下,也有 1 - p 的几率向右倒下。如果一棵树倒下时撞到了其它树,被撞到的那棵树也会倒下,且方向与撞到它的那棵树相同。当且仅当两棵树的距离严格小于 h 时两棵树才能相撞。

例如,有四棵树分别位于位置 1358,并且 h = 3。当坐标为 1 的树倒下时,它撞到了坐标为 3 的树。坐标为 3 的树倒下时它又撞到了坐标为 5 的树。由于坐标为 5 的树和坐标为 8 的树之间距离是 3,因此坐标为 8 的树不会倒下。

只要还有树没有倒下,Wilbor就会有 0.5 的几率选择砍倒最左边的树以及 0.5 的几率选择砍倒最右边的树。如果只剩下一棵树未被砍倒,那么Wilbor一定会把它砍倒。鉴于树场周围全是草,Wilbor想要知道被砍倒的树覆盖的草的长度是多少。请帮帮Wilbor吧。

输入格式:

输入数据的第一行包括两个整数,n (1 <= n <= 2000)和 h (1 <= h <= 10^8)和一个实数 p (0 <= p <= 1),不会超过六位小数。

第二行包括 n 个整数 x1,x2,...,xn (-10^8 <= xi <= 10^8),数据是无序输入的。

输出格式:

输出一个实数表示被砍倒的树所覆盖的长度。输出结果和标准答案最多相差 10^-6。

说明:

在样例一中,我们有 2 棵高度为 2 的树。

https://cdn.luogu.com.cn/upload/vjudge_pic/CF596D/7ea79c02ec83af888c806be42da0defa4e428746.png

一共有三种情况:
1.两棵树都向左倒。可能是右边的树撞倒了左边的树,这种情况的概率为 1/2 · 1/2 = 1/4。也有可能是左边的树先倒下右边的树后倒下,这种情况的概率为 1/4 · 1/2 = 1/8。总概率为 1/4 + 1/8 = 3/82.两棵树都向右倒。分析过程与上一条相同,总概率也为 3/83.左边的树向左倒,右边的树向右倒。总概率为 1 - 3/8 - 3/8 = 1/4。

前两种情况都会覆盖 3 的长度,第三种情况会覆盖 4 的长度。那么答案即为 3 · (3/8) + 3 · (3/8) + 4 · (1/4) = 3.25

回复

4 条回复,欢迎继续交流。

正在加载回复...