快乐的一天从AC开始 | 20210630 | P5268
首先,题目给出的式子中\(x\)的范围可以缩小到\([1, n]\)。
然后这个式子是4元的,感觉很不好写。注意到范围再2D平面中是个矩形,试着搞下矩形容斥,即把一个询问拆成4个询问,拆分后的询问只有2元。具体如下:
\[\begin{aligned}
\operatorname{Ans} &= Q_1 - Q_2 - Q_3 + Q_4\\
Q_1 &= \sum_{x = 1}^{n} get(1, r_1, x) \times get(1, r_2, x)\\
Q_2 &= \sum_{x = 1}^{n} get(1, l_1 - 1, x) \times get(1, r_2, x)\\
Q_3 &= \sum_{x = 1}^{n} get(1, r_1, x) \times get(1, l_2 - 1, x)\\
Q_4 &= \sum_{x = 1}^{n} get(1, l_1 - 1, x) \times get(1, l_2 - 1, x)\\
\end{aligned}
\]
现在就可以直接莫队搞。
注意:我写代码的时候偷懒直接抠莫队板子了,结果一直跑不过样例。其实这题和一般莫队不一样。一般莫队维护的是一个区间\([l, r]\),而这一题莫队维护的是两个区间\([1, l]\)和\([1, r]\)。对于添加和删除操作,一般莫队操作左端点和右端点的逻辑是相反的,而这题是一致的。