• 数据结构记录


    分块:

    prob1:长度为n的数列,n次操作,单点插入,单点/区间查询(假设需要维护的信息可以O(1)维护)

    sulution:分块,sqrt(n)次操作后重构,重构O(n),总复杂度O(nlogn)

    other_solu:用splay维护即可,O(nlogn),常数大,复杂度允许的话写上面那个

    prob2:长度为n的数列,n次操作,每次操作是(l, r, c),询问区间中等于c的有多少个,并将区间都改为c

    solution:分块,每块维护一个有序数组和覆盖的lazy标记即可,查询时当前块有标记则O(1)得到答案,否则O(logn)得到,总复杂度是O(n*sqrt(n)*logn)

    实际上我们只维护每个块是否是同一个数字,是则O(1)回答,否则暴力查询。若块大小为k,则修改为O(k + n / k),查询为O(n)

    但实际上一次操作最多使两个块,由同一个数字的状态变为非同一个数字的状态,所以修改的均摊复杂度是O(n / k)的

    k取根号,总复杂度O(n^1.5)

    prob3:长度为n的数列,n次询问,问区间众数

    solu1(离线):莫队+set,O(n*sqrt(n)*logn)

    solu2(在线):参见clj论文(区间众数解题报告)第一种做法,复杂度同上

    solu3(在线):clj论文的无修改优化做法,O(n^1.5)

    solu4(离线):莫队有个O(n^1.5)的做法,额外维护当前区间出现次数为i的数字有多少个即可,这做法有空间优势,O(n)的空间

    能够维护众数出现次数,但无法维护众数是哪个数

    prob4:带修改区间众数

    solution(在线):参见clj论文,O(n^(5/3))

    prob5:查询区间出现正偶数次/正奇数次的数字个数

    solu:相当于count在模2意义下的众数

  • 相关阅读:
    【SSM电商项目后台开发】004-用户模块
    【SSM电商项目后台开发】003-项目架构概览
    C#面向对象编程「字段与属性」
    C#基本语法
    C#学习笔记-简介
    软件工程团队作业展示
    “消灭选择困难症”软件设计规格说明书
    “消灭选择困难APP”软件需求规格说明书
    消灭选择困难APP
    消灭选择困难
  • 原文地址:https://www.cnblogs.com/ytytzzz/p/10975543.html
Copyright © 2020-2023  润新知