莫队二次离线

众所周知:

莫队是一个神仙的算法,它的复杂度为:$O(n \sqrt{m} f(n))$。其中 $f(n)$ 为左右端点移动一格的复杂度。

但是这并不能满足我们,我们发现当 $f(n)$ 过大时就无法接受了。

这是就要引入神仙的数据结构:莫队二次离线,它可以将该复杂度优化至:$O(nf(n)+n\sqrt{m})$。

设:一个元素 $x$ 对一个区间 $[l,r]$ 的贡献为:$f(x,[l,r])$

一个元素 x 对一个区间 $[1,k]$ 的贡献为:$f(x,k)$

当一个元素 $x$ 对一个区间 $[l,r]$ 的贡献满足:$f(x,[l,r])=f(x,r)-f(x,l-1)$

我们就可以进行莫队二次离线。

设 $h(l,r)$ 为一段区间的答案,$g([l_1,r_1],[l_2,r_2])$ 为区间 $l_1$~$r_1$ 对 $l_2$~$r_2$ 的贡献。

当我们要跳转 $h(l_1,r_1)$ 到 $h(l_2,r_2)$ :

先考虑 $h(l_1,r_1)$ 到 $h(l_2,r_1)$ :

当$l_1 \rightarrow l_1+1$:

有左端点向右移的贡献:

$$-f(l_1,[l_1,r_1])=-f(l_1,r_1)+f(l_1,l_1-1)$$

等式右边的$f(l_1,l_1-1)$这东西可以预处理。

时间复杂度很容易分析:$O(nf(n))$

主要是考虑等式右边的$f(l_1,r_1)$

考虑将柿子完全写出来:

$$\sum_{x=l_1}^{l_2-1}-f(x,r_1)+f(x,x-1)$$

主要求:

$$\sum_{x=l_1}^{l_2-1}-f(x,r_1)$$

我们可以记下关键词 $l,r,id,p,i$,分别代表求和符号的上界和下界,在第几次问题中改动,正负,右边的不动点。

此处,$l=l_1,r=l_2-1,p=-1,i=r_1$

当$l_1 \rightarrow l_1-1$:

有左端点向左移的贡献:

$$f(l_1-1,[l_1-1,r_1])=f(l_1-1,r_1)-f(l_1-1,l_1-2)$$

等式右边的$f(l_1-1,l_1-2)$这东西可以预处理。

时间复杂度很容易分析:$O(nf(n))$

主要是考虑等式右边的$f(l_1-1,r_1)$

将柿子完全写出来:

$$\sum_{x=l_2}^{l_1-1}f(x,r_1)-f(x,x-1)$$

主要求:

$$\sum_{x=l_2}^{l_1-1}f(x,r_1)$$

此处,$l=l_2,r=l_1-1,p=1,i=r_1$

再考虑 $h(l_2,r_1)$ 到 $h(l_2,r_2)$ :

当$r_1 \rightarrow r_1-1$:

有右端点向左移的贡献:

$$-f(r_1,[l_1,r_1])=-f(r_1,r_1)+f(r_1,l_1-1)$$

等式右边的$f(r_1,r_1)$这东西可以预处理。

时间复杂度很容易分析:$O(nf(n))$

主要是考虑等式右边的$f(r_1,l_1-1)$

将柿子写出来:

$$\sum_{x=r_2+1}^{r_1}-f(x,x)+f(x,l_1-1)$$

主要求:

$$\sum_{x=r_2+1}^{r_1}f(x,l_1-1)$$

此处,$l=r_2+1,r=r_1,p=1,i=l_1-1$

当$r_1 \rightarrow r_1+1$:

有右端点向右移的贡献:

$$f(r_1+1,[l_1,r_1+1])=-f(r_1+1,r_1+1)+f(r_1+1,l_1-1)$$

等式右边的$f(r_1+1,r_1+1)$这东西可以预处理。

时间复杂度很容易分析:$O(nf(n))$

主要是考虑等式右边的$f(r_1+1,l_1-1)$

将柿子写出来:

$$\sum_{x=r_1+1}^{r_2}f(x,x)-f(x,l_1-1)$$

主要求:

$$\sum_{x=r_1+1}^{r_2}-f(x,l_1-1)$$

此处,$l=r_1+1,r=r_2,p=-1,i=l_1-1$

然后扫描线就可以将我们存的这些量修改即可。

复杂度变成了:$O(nf(n)+n\sqrt{m})$

以下给出模板题:

https://www.luogu.com.cn/problem/P4887

https://www.luogu.com.cn/paste/rs7cp0o5

以及练手题:

https://www.luogu.com.cn/problem/P5398

https://www.luogu.com.cn/paste/kg48scuw

 

posted @ 2022-06-11 14:01  Detect-Perplexity  阅读(585)  评论(0编辑  收藏  举报