思路:
题目中的操作1即为添加一个区间$[l,r]$, 操作2即询问有多少个区间与查询区间$[l’,r’]$相交.
区间相交的条件即为$l \le r’ \land r \ge l’$, 计数的时候只需要把$l \le r’$的区间数量减去$r < l’$的区间数量即可.
设$dl_x$表示左端点在$x$处的区间数量, $dr_x$表示右端点在$x$处的区间数量, $cl_x, cr_x$分别为$dl_x, dr_x$的前缀和, 则所求的区间数量为$cl_{r’} - cr_{l’-1}$.
$cl, cr$使用树状数组维护即可.
代码:
1 |
|