zoukankan      html  css  js  c++  java
  • 分块笔记-根号平衡

    利用分块结构,我们可以进行根号平衡,在特殊的情况下可以优化复杂度,如平衡修改和查询的复杂度

    (O(sqrt{N}))单点修改,(O(1))查询区间和

    • 首先思考(O(N))单点查询(O(1))查询区间和(这是重要的思考方式),我们可以维护一个前缀和数组
    • 同样的,在块内,快外分别维护前缀和,每次修改更新(sqrt{N})个前缀和,每次查询就把块内快外的前缀和加起来就行了

    (O(1))单点修改,(O(sqrt{N}))查询区间和

    • 维护块内和,每次修改块内和和该位置的值

    (O(sqrt{N}))区间加,(O(1))查询单点值

    • 直接分块,在块上大区间加标记

    (O(1))区间加,(O(sqrt{N}))查单点

    • 维护差分数组即可

    (O(1))插入一个数,(O(sqrt{N}))查询第k小

    • 值域分块,维护区间加

    (O(sqrt{N}))插入一个数,(O(1))查询第k小

    • 仍然用值域分块,维护每个数在那个位置,保证每个块内为(sqrt{N})个元素(最后一个除外)并有序
    • 每次查询修改(sqrt{N})个值的所在块
    • 查询时定位位置即可
  • 相关阅读:
    vue--组件基础
    vue中的一些知识点--多看文档
    关于组件--React
    数组方法-->map()
    正则表达式使用
    border-image 和 border-color 不能同时使用问题
    gulp
    oninput 中文输入
    linux文档权限
    为什么使用 use strict
  • 原文地址:https://www.cnblogs.com/hangzz/p/13257442.html
Copyright © 2011-2022 走看看