线段树-区间的交

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37517391/article/details/82964956

区间的交

题目来源

孙耀峰Segment_Tree.pdf 原创

题目描述

  • 给定 n n 个区间, [ l i , r i ] [l_i,r_i] ,可以选出其中一些区间,设选出 t o t tot 个,令 x x 表示这 t o t tot 个区间交的长度.
  • m i n { x , t o t } min\{x,tot\}
  • n 1 0 5 , 1 x i y i n n \le 10^5,1 \le x_i \le y_i \le n

题目解答

我们发现当 t o t tot 增大时 x x 会减小,具有单调性.

我们把线段看成是平面上二维的点 ( l , r ) (l,r) .

那么我们考虑从小到大枚举线段的交的右端点 R R ,如果,交线段的长度为 x x ,那么交线段左端点就是 L = R x + 1 L=R-x+1 ,而所有包含这个交线段线段(此时被表示成了数点)我们可以用一颗线段树来维护,因此我们可以很快的在线段树上找到所有 l L r R l \le L 且 r \ge R 的点的个数,这些个数就是 t o t tot .

考虑到 x = R L + 1 x = R-L+1 是一个关于 L L 减函数,而 t o t tot 则是关于 L L 的增函数.
也就是说,随着 L L 的增大, x x 在增大, t o t tot 在减小,则显然答案 m i n { x , t o t } min\{x,tot\} 在满足 x t o t x \le tot 最大的 L L 时取得最大值 t o t tot .

考虑到单调性,我们使用二分法,可以很快的找到对于一个 R R ,满足 x t o t x \le tot 最大的 L L .

原题解

下面是孙耀峰聚聚的题解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_37517391/article/details/82964956