题意简述
给定 $n$ 个区间 $[l_i,r_i]$,和 $Q$ 个询问,每次给你三个整数 $[l,r,k]$,求被 $[l,r]$ 完全包含且长度 $\ge k$ 的区间数量。
注:定义一个区间 $[l,r]$ 的长度是 $r-l$。
$n,q\le 10^6$,$1\le l_i,r_i,l,r,k\le n$,$l_i<r_i,l<r$
思路
如果没有 $k$ 的限制,只是要求完全包含的区间数量,可以用两个树状数组,然后计算右端点在 $[1,r]$ 中的数量减去左端点在 $[1,l-1]$ 中的数量。
然后现在有了 $k$ 的限制,我们把一个询问拆成 $[l,r,r-l]$ 减去 $[l,r,k-1]$。然后把询问和区间都按长度排序,一个一个处理即可。还有就是记录一下这个答案属于第几个询问,带正号还是带负号
($[l,r,r-l]$ 带正号,$[l,r,k-1]$ 带负号,看上面答案是怎么算的)
然后就做完了。
代码
1 |
|