莫队(二)原理及基本思想

上节说了下莫队的来源

接下来口胡(wu)它的基本思想

#

举一个弱智的栗子

我们来询问一下5 4 2 3 1的离线【L , R】区间和

哦当然前缀和O(1)秒杀我们暂时忽略这点

#

给出以下询问

1 2

4 5

3 5

我们假装已经得到【1,2】的区间和S(记下来),我们想要充分利用这个S去得到下一个答案,考虑他们之间的转移,我们把a[3],a[4],a[5]加到S中去,这样就得到了【1,5】的答案S,好的记下来

#

接着我们把a[1],a[2],a[3]从S中减掉,这样就得到了【4,5】的答案S,好的记下来,完成转移挖好声器

同样的把a[3]加到S中得到【3,5】的答案S好的记下来。

这样最后把答案输出即可

#

下面我们数一数进行了多少次加减法,即进行了多少次运算

7次

这道题是离线的所以我们把询问安排下处理顺序

得到【1,2】后先处理【3,5】后【4,5】

这样运算是6次(应该没数错吧…)

莫队就是靠这样暴力的转移再加一些玄学的对询问排序来达到可以A题的效果

把以上的过程推广到区间离线问题中

(下面用【a,b】代替区间a,b的答案)

如果我们可以在很短时间内从【L,R】得到【L,R+1】【L,R-1】【L+1,R】【L-1,R】

那么从【L1,R1】到【L2,R2】的转移的复杂度就是|L2 - L1| + |R2 - R1|

最后把所有询问处理一遍就可以的到所有答案,复杂度自然就是相邻处理问题之间的|L2 - L1| + |R2 - R1|加起来

复杂度?

不加对问题排序的暴力转移会T成翔

于此,有两种解决办法

圈1:把询问看成二维平面上的点,最小复杂度就是曼哈顿距离最小生成树的树边和(代码量较大但较快)

圈2:神奇的分块排序,将复杂度优化到均摊O(n*sqrt(n))

End。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值