• 莫队


    回滚莫队

    用来处理一类区间扩张容易而收缩难的莫队问题。

    大概的思路如下:
    还是按莫队的方法排序(不要奇偶性优化),把所有询问按照左端点所在块分类处理。
    对于左端点在同一个块([L,R])的,先把右端点也在([L,R])内的暴力处理。
    而其它询问的右端点必定递增,因此我们可以实时处理出([R,r])的区间信息,每次把左端点从(R)移到(l)
    可以发现这样做我们的复杂度还是(O(nsqrt n))的,并且只需要支持区间扩张了。

    莫队二次离线

    (m)个询问,每次询问(sumlimits_{i=l}^rsumlimits_{j=l}^rval(l,r))

    (f(p,l,r)=sumlimits_{i=l}^rval(p,i))
    考虑莫队的过程,假如我们现在要把区间从([l,r])移到([l,r+k])
    那么我们会多出来(sumlimits_{i=1}^kf(r+i,l,r+i))的贡献。
    利用差分将其转化为(sumlimits_{i=1}^kf(r+i,1,r+i)-f(r+i,1,l-1))
    前面的最多只有(O(n))种。
    对于后面的,我们考虑把所有形如(forall pin[l,r],f(p,1,i))这样的询问的([l,r])挂在([1,i])的右端点(i)上。
    总共会挂(O(n))个长度总和为(O(nsqrt n))的区间。
    考虑扫描线,从左往右计算,记录一些([1,i])的信息,然后把挂在(i)的询问拿出来,(O(1))地计算各个(f(x,1,i))。相当于(O(n))次插入和(O(nsqrt n))次询问。
    有的时候也可以(O(sqrt n))地计算(sumlimits_{x=l}^rf(x,1,i))

  • 相关阅读:
    逻辑卷扩容
    iptables网络防火墙||SNAT,DNAT等转发路由动作
    常用rman操作语句
    常用Oracle的SQL语句
    oracle中的单引号和双竖线||以及q'间隔符
    网站升级HTTPS教程
    站长必备:网站被黑后怎么快速搞定
    常见HTTP错误代码
    在Android中实现一个简易的Http服务器
    Android开发新手常见的10个误区
  • 原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12210004.html
Copyright © 2020-2023  润新知