【JZOJ 6087】【GDOI2019模拟2019.3.26】获取名额

本文探讨了一种高效的概率计算方法,特别是针对大规模数据集时如何通过特殊处理确保计算精度。提出了一种利用对数泰勒展开的方法,并引入阈值来提高计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

在这里插入图片描述

n,q≤6∗105,max⁡{ai}≤109,ans精度要求小于10−6n,q\leq 6*10^5,\max\{a_i\}\leq 10^9,ans精度要求小于10^{-6}n,q6105,max{ai}109ans106

Solution

min⁡{ai}≤x\min\{a_i\}\leq xmin{ai}x时,ans恒为1,
剩下的显然的有:
Ansi=1−∏(1−aix)Ans_i=1-\prod (1-\frac{a_i}{x})Ansi=1(1xai)

考虑取对数后泰勒展开,
ln⁡(1−aix)=−∑j=1aijj∗xj\ln(1-\frac{a_i}{x})=-\sum_{j=1}\frac{a_i^j}{j*x^j}ln(1xai)=j=1jxjaij

这样就可以对一个区间一起处理了,预处理前几项即可,

然而这样精度可能还有点不够,考虑进一步提升精度

定义阈值LILILI,
对于aix≥LI\frac{a_i}{x}\geq LIxaiLI的位置,特殊提出来处理,因为就是这样的位置导致精度不够的,
原因:恒有aix&lt;1\frac{a_i}{x}&lt;1xai<1,随着次数j的增加,(aix)j(\frac{a_i}{x})^j(xai)j是衰减的,当aix\frac{a_i}{x}xai较大时,它的衰减的很慢,也就是出现精度不够情况了,

LI=0.5LI=0.5LI=0.5就差不多了,
可以证明,这样的位置没有很多,因为aix\frac{a_i}{x}xai较大意味着1−aix1-\frac{a_i}{x}1xai较小,所以如果很多的话很快就衰减到精度以下了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值