首页 > 其他分享 >数据结构套路大赏

数据结构套路大赏

时间:2024-02-11 11:44:05浏览次数:33  
标签:持久 数组 套路 线段 离线 区间 扫描线 大赏 数据结构

现在感觉没啥写的,先留着以后会填的(

一、线段树:

1、线段树维护哈希

2、线段树套DSU(其实没啥用)

二、平衡树:

 

三、树状数组:

1、树状数组二分(倍增),常数小,而且好写

四、分块:

 

五、杂项:

1、留意“取模”类的修改操作,每次取模会至少减半,哪怕看似暴力的解法也很有可能不高于nlogn

2、扫描线,将询问离线下来,扫描线消掉1side,问题简化。或者将区间[l,r]的区间定位为平面上的点(l,r),很多区间子区间询问转化为二维数点问题

3、持久化的骗局:看似持久化,但是不强制在线,那可以把操作树建出来,扫一遍欧拉序就离线完成完全持久化

3.5、持久化:路径复制(优点:可以支持完全持久化,缺点:代码较长(不好调试),常数一般较大,且一般的实现为logn),肥节点(优点:好写,常数小,复杂度一般为log(单个节点数据变化次数)(通常是loglogn),缺点:不容易支持完全持久化(如果你想写动态标号法+veb树当我没说)(但是看着麻烦也还是loglogn,理论上薄纱了路径复制))

4、启发式合并,不用多说了

5、并查集维护nxt数组(下一个合法操作位置),路径压缩,实现均摊logn

6、画(胡)变化的函数图像,找性质

标签:持久,数组,套路,线段,离线,区间,扫描线,大赏,数据结构
From: https://www.cnblogs.com/Ga1ahad-and-Scientific-Witchery/p/18013293

相关文章

  • 【Java 并发】【十】【JUC数据结构】【十】PriorityBlockingQueue 原理
    1 前言这节我们继续看看另一个队列 PriorityBlockingQueue,优先级的哈。2 PriorityBlockingQueue介绍PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高或者最低的元素。其内部是使用平衡二叉树堆实现的,所以直接遍历队列元素不保证有序。默认使......
  • 【Java 并发】【十】【JUC数据结构】【九】ConcurrentLinkedQueue 原理
    1 前言JDK中提供了一系列场景的并发安全队列。总的来说,按照实现方式的不同可分为阻塞队列和非阻塞队列,前者使用锁实现,而后者则使用CAS非阻塞算法实现。这节我们来看看 ConcurrentLinkedQueue。2 ConcurrentLinkedQueue介绍ConcurrentLinkedQueue是线程安全的无界非阻......
  • 数据结构——第1章 绪论
    目录1.1数据结构的研究内容1.2基本概念和术语1.2.1数据、··元素、··项和··对象1.2.2数据结构1.2.3数据类型和抽象数据类型1.3抽象数据类型的表示与实现1.4算法和算法分析1.4.1算法的定义与特性1.4.2算法的时间复杂度1.4.3算法的空间复杂度1.5小结1.1数据结构的......
  • 学习 Redis 基础数据结构,不讲虚的。
    学习Redis基础数据结构,不讲虚的。一个群友给我发消息,“该学的都学了,怎么就找不到心意的工作,太难了”。很多在近期找过工作的同学一定都知道了,背诵八股文已经不是找工作的绝对王牌。企业最终要的是可以创造价值,或者首先需要干活的人,所以实战很重要。今天这篇文章就是给大家分享......
  • [数据结构] 队列
    队列的基本概念队列(Queue),是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队,删除元素称为出队。其操作特性是先进先出队列的常见操作:函数名功能InitQueue(*Q)初始化队列,构造一个空队列QQueueEmpty(Q)判断队列空......
  • 二分搜索套路
    我们前文我写了首诗,把二分搜索变成了默写题详细介绍了二分搜索的细节问题,探讨了「搜索一个元素」,「搜索左侧边界」,「搜索右侧边界」这三个情况,教你如何写出正确无bug的二分搜索算法。但是前文总结的二分搜索代码框架仅仅局限于「在有序数组中搜索指定元素」这个基本场景,具体......
  • [数据结构] 数组与特殊矩阵
    写在前面偷懒,先写了数组,列表要画图,所以今天就先不写了数组的定义数组是由n个相同类型的数据元素构成的有限序列。每个数据元素被称为一个数组元素,每个元素在n个线性关系中的序号称为该元素的下标,下标的取值范围称为数组的维界。数组与线性表的关系:数组是线性表的推广。一维数......
  • Java 中的哈希表数据结构
    哈希表数据结构HashMap集合:在JDK8之后,如果单向链表中的元素超过8个,单向链表数据结构就会变成红黑树数据结构,当红黑树上的节点数量小于6时,会重新把红黑树变成单向链表数据结构。HashMap集合底层是哈希表/散列表的数据结构哈希表是一个怎样的数据结构?哈希表是一个数组和单向链......
  • [数据结构] 栈
    栈的定义及特点栈(Stack)是只允许在一端进行插入或删除操作的线性表,如图所示:栈顶(top):线性表允许进行插入、删除的一端;栈底(bottom):不允许进行插入和删除的一端;空栈:不含任何元素的空表。如上图所示,设某个栈\(S=(a_1,a_2,a_3,a_4,a_5)\),则\(a_1\)为栈底元素,\(a_5\)为栈顶元素。......
  • 经典数据结构题目-图
    图200.岛屿数量思路遍历二维数组,遇到等于1的进行计算。同时修改同岛的位置为0,避免重复计算遍历同岛的位置,可以采用dfs深度优先搜索代码char[][]g;publicintnumIslands(char[][]grid){intsum=0;g=grid;for(inti=0;......