【NOIP practice】BSOJ 3851 计算概率 智力题——加法原理

3851 -- 【模拟试题】计算概率
Description
  小明有n个长度不一的小木棍,这些木棍的长度都是正整数。小明的父亲想和小明做一个游戏。他规定一个整数长度l,让小明闭着眼睛从n个木棍中随便拿出两个。如果两个木棍的长度总和小于等于l,则小明胜,否则小明的父亲胜。小明想知道他胜出的概率究竟有多大。
Input
  输入包含两行。第一行为两个整数n和l,其中n和l都不超过100000。第二行包含n个整数,分别为n个木棍的长度。
Output
  输出包含一个实数,小明胜出的概率,保留两位小数。
Sample Input


4 5
1 2 3 4
Sample Output

0.67


看看数据范围发现(n^2)/2算法是过不了的..

其实这道题就是一个水水的加法原理,先排序,插入i=1,j=n两根指针,若a[i]+a[j]<=l,则从i->中间的所有数+a[i]都是符合要求的,首指针+1,否则把尾指针-1,加一个统计就好了。

这里我把时间复杂度减了一点,没有让i-->n,j-->1,而只是让i-->j,那么总的可能性就是高斯求和了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值