快乐的一天从AC开始 | 20210630 | P5268

题目链接

AC代码

首先,题目给出的式子中\(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]\)。对于添加和删除操作,一般莫队操作左端点和右端点的逻辑是相反的,而这题是一致的。

posted @ 2021-06-30 11:37  _Backl1ght  阅读(35)  评论(0编辑  收藏  举报