线段树-区间的交

区间的交

题目来源

孙耀峰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 n105,1xiyin

题目解答

我们发现当 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=Rx+1,而所有包含这个交线段线段(此时被表示成了数点)我们可以用一颗线段树来维护,因此我们可以很快的在线段树上找到所有 l ≤ L 且 r ≥ R l \le L 且 r \ge R lLrR的点的个数,这些个数就是 t o t tot tot.

考虑到 x = R − L + 1 x = R-L+1 x=RL+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 xtot最大的 L L L时取得最大值 t o t tot tot.

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

原题解

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

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值