莫队.
如果所有的 $l$ 都一样,那么每个询问就只有 $2$ 个右端点需要移动,可以用莫队做.
把它看成平面上对一个矩形询问,就可以想到用容斥把 $l$ 全部弄成 $1$ .
$$
\begin{aligned}
ans&={\rm get}(1,r_1,x)\cdot {\rm get}(1,r_2,x) \\
&-{\rm get}(1,l_1-1,x)\cdot {\rm get}(1,r_2,x)\\
&-{\rm get}(1,r_1,x)\cdot {\rm get}(1,l_2-1,x)\\
&+{\rm get}(1,l_1-1,x)\cdot {\rm get}(1,l_2-1,x)
&\end{aligned}
$$
把每个询问拆成 $4$ 次询问,用莫队的方式去移动端点就可以了.
时间复杂度 $O(n\sqrt n)$ .
1 | //%std |