原题
题目描述
样例
输入
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] [i,i+1],维护包含该区间的线段的交集的期望。这个期望通过计算所有区间的贡献和。
- 从 m m m个线段,找出 a a a个线段包含区间 [ i , i + 1 ] [i,i+1] [i,i+1]。计算这 a a a个线段的交集的期望,等于每个区间的贡献总和。
- a a a个线段,有 b b b个线段覆盖区间 [ j , j + 1 ] [j,j+1] [j,j