有 $n$ 个人,每人有属性 $l_i,v_i,r_i(l_i\leq v_i\leq r_i)$,要求选出最大的人的集合$S$ 使得 $\forall x,y\in S$ 有 $l_y\leq v_x\leq r_y$
分析可得$l_{max}\leq v_{min}\leq v_{max}\leq r_{min}$
等价于存在$l_{max}\leq x\leq v_{min}, v_{max}\leq y\leq r_{min}$
$l_{max}\leq x\leq v_{min}$,相当于所有$[l,v]$相交,同理相当于所有$[v,r]$相交,询问是否存在这个区域。就相当于二维相交问题,扫描线解决。
- 考虑到记录方案数,只需要把最多重叠区域中的$(x,y)$,顺便记录下来,通过之前的等式判断哪些人是否符合即可。
代码
1 |
|