2020牛客暑期多校训练营(第九场) Groundhog and Gaming Time

本文介绍了一种解决线段交集期望问题的方法,通过排序、离散化和线段树来计算。首先按线段左端点排序,再按右端点排序,并构建线段树。接着遍历区间,计算包含该区间的线段交集期望。对于a个线段,找出其中有b个覆盖区间[j, j+1],其贡献为长度*(2b-1)/2n,最后除以2n得到期望,这里利用了快速幂和逆元。" 83143419,7974423,使用Python实现《机器学习》中的BP神经网络,"['Python', '机器学习', '神经网络', 'BP神经网络']
摘要由CSDN通过智能技术生成

原题
题目描述
在这里插入图片描述
样例
输入

6
2 2
1 2
1 4
1 5
3 5
3 6

输出

405536771

思路
求期望可以用累加每种情况对期望的贡献求得,本题就是用的这个思路。
线段的交取决于最大的左端点以及最小的右端点,同时维护两个东西比较困难。
所以我们先按照线段左端点从大到小排序,存在数组 t l tl tl中,按照线段右端点从大到小排序,存在数组 t r tr tr中。同时还可以离散化一下,节省一下复杂度,然后构建线段树,然后做的操作 : :

  • 遍历区间 [ i , i + 1 ] [i,i+1] [ii+1],维护包含该区间的线段的交集的期望。这个期望通过计算所有区间的贡献和。
  • m m m个线段,找出 a a a个线段包含区间 [ i , i + 1 ] [i,i+1] [ii+1]。计算这 a a a个线段的交集的期望,等于每个区间的贡献总和。
  • a a a个线段,有 b b b个线段覆盖区间 [ j , j + 1 ] [j,j+1] [jj
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值