区间的交
题目来源
孙耀峰Segment_Tree.pdf 原创
题目描述
- 给定 n n n个区间, [ l i , r i ] [l_i,r_i] [li,ri],可以选出其中一些区间,设选出 t o t tot tot个,令 x x x表示这 t o t tot tot个区间交的长度.
- 求 m i n { x , t o t } min\{x,tot\} 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 n≤105,1≤xi≤yi≤n
题目解答
我们发现当 t o t tot tot增大时 x x x会减小,具有单调性.
我们把线段看成是平面上二维的点 ( l , r ) (l,r) (l,r).
那么我们考虑从小到大枚举线段的交的右端点 R R R,如果,交线段的长度为 x x x,那么交线段左端点就是 L = R − x + 1 L=R-x+1 L=R−x+1,而所有包含这个交线段的线段(此时被表示成了数点)我们可以用一颗线段树来维护,因此我们可以很快的在线段树上找到所有 l ≤ L 且 r ≥ R l \le L 且 r \ge R l≤L且r≥R的点的个数,这些个数就是 t o t tot tot.
考虑到
x
=
R
−
L
+
1
x = R-L+1
x=R−L+1是一个关于
L
L
L减函数,而
t
o
t
tot
tot则是关于
L
L
L的增函数.
也就是说,随着
L
L
L的增大,
x
x
x在增大,
t
o
t
tot
tot在减小,则显然答案
m
i
n
{
x
,
t
o
t
}
min\{x,tot\}
min{x,tot}在满足
x
≤
t
o
t
x \le tot
x≤tot最大的
L
L
L时取得最大值
t
o
t
tot
tot.
考虑到单调性,我们使用二分法,可以很快的找到对于一个 R R R,满足 x ≤ t o t x \le tot x≤tot最大的 L L L.
原题解
下面是孙耀峰聚聚的题解