• 二次离线莫队


    莫队的二次离线说难也难,说简单也简单,主要是看你对莫队的理解是否深刻。
    这个算法说白了,就是把复杂度拆开,比如一个你莫队的时候一次移动复杂度是 (O(log n)),那么整体的复杂度就是 (O(nsqrt nlog n)),导致无法通过。
    但是莫队虽然是一个离线算法,但是它的左右端点移动造成的贡献差的计算却是在线的,我们可以把这个在线的东西再次离线下来计算,对复杂度进行进一步的优化。

    先来一个例题
    对于这题,我们如果莫队之后暴力计算贡献(使用树状数组)的复杂度是 (O(nsqrt nlog n)) 的。
    但是我们可以发现,每次移动右端点时,左端点总是不变的,所以我们可以通俗的写成 (f(x,l,r)) 是左端点是 (x),右端点从 (l-1) 变到 (r) 所造成的贡献,然后我们可以根据之前的式子推一下。
    (g(x,y)) 表示右端点从 (y-1) 变成 (y) 造成的贡献,那么 (f(x,l,r)=sum_{i=l}^r g(x,i)),然后我们对于 (x) 排个序之后值域分块,就可以做到 (O(sqrt n)) 计算贡献。
    而固定右端点移动左端点的时候同理。

  • 相关阅读:
    Developing
    debian 中的jdk
    openwrt手册编译
    下载openwrt源码
    progit 学习笔记-- 1 第一章 第二章
    nw335 debian sid x86-64 -- 6 第三方驱动
    nw335 debian sid x86-64 -- 5 使用xp的驱动
    nw335 debian sid x86-64 -- 4 realtek 提供的官方驱动
    JavaScript中介者模式
    javascript职责链模式
  • 原文地址:https://www.cnblogs.com/chen-1/p/15023544.html
Copyright © 2020-2023  润新知