合集-数据结构
摘要:前言: 带修主席树的本质并不是主席树,而是树状数组套权值线段树!它并没有可持久化! 所以并没有将这个知识点放到可持久化数据结构的博客里,而是单独拎出来。 正题 刚学习了用可持久化线段树解静态区间第 小,那么拓展一下:如果在此基础上加上单点修改,阁下又该如何应对? P2464 [SDOI2
阅读全文
摘要: 简介 可持久化就是通过每次修改都创建新版本,来保留数据结构回滚与访问历史版本的能力。 可持久化分为两类: 部分可持久化:所有版本都可以访问,但是只有最新版本可以修改; 完全可持久化:所有版本都既可以访问又可以修改。 注意:一个数据结构可持久化当且仅当它的拓补结构在
阅读全文
摘要: 简介 伸展树,也叫 ,是平衡树的一种。所以它也满足二叉搜索树的所有性质。 灵活多变,应用广泛,能够很方便地支持各种动态的区间操作,码量适中。 定义 struct node { int s[2]
阅读全文
摘要:前言 虽然分块是一种数据结构,但是我认为它更像一种思想:分部分处理序列。 虽然分块的时间复杂度一般比树状数组和线段树高,但是它能解决很多树状数组和线段树解决不了的事情。比如:树状数组和线段树在维护不满足区间可加、可减性的信息时显得吃力,代码实现也不简单直观。这时候,常常就要请出我们的分块大法啦。 它
阅读全文
摘要:5.并查集 它有两个功能:将两个集合合并和询问两个元素是否在同一个集合内。 不妨设想一下,假如不使用并查集,用暴力的做法,那么第一个操作的时间复杂度约为 ,第二个操作的时间复杂度为 ,第一个操作的时间复杂度较高。 但如果使用了并查集,则可以将近 的时
阅读全文
摘要: :前置芝士 归并排序; 树状数组; 重载运算符(这个大概都会吧)。 :介绍 cdq 分治是一种离线分治算法,可用来处理以下几种问题: 解决和点对有关的问题。 1D 动态规划的优化与转移。 通过 CDQ 分治,将一些动态问题转化为静态
阅读全文
摘要: :前置芝士 二叉搜索树 堆 单调栈 :概念 笛卡尔树是一种二叉树,每一个结点由一个键值二元组 构成。要求 满足二叉搜索树的性质(左小右大),而 满足堆的性质(大根堆或小根堆)。 q1:这么
阅读全文
摘要:1. 离线树状数组 介绍 有一类经典问题:给定一个序列,每次询问一个区间内的元素种类数。 这种题的做法有很多:莫队、分块、主席树……在不强制在线的情况下,他们的效率都较低,有一种效率高、空间小的离线做法:离线树状数组。 例题: P1972 [SDOI2009] HH的项链 题目大意 给定一个长度为
阅读全文
摘要:题目传送门 题目大意: 给定一个长度为 的序列, 次询问区间 内只出现过一次的数有多少个。 思路: 很明显带修莫队可以做。 复习一下,带修莫队就是在普通莫队的基础上加上了时间轴,把操作分为询问操作和修改操作两种分别存下来。 因为修改是有顺序的,每次修改只会
阅读全文
摘要:题目传送门 扫描线是一种求矩形面积并或周长并的好方法。 假设在一个平面上有几个矩形,要求它们共覆盖了多大的面积。由于矩形可能会有重叠的地方,所以最后要求的图形就是一个不规则的图形。 要求它的面积十分复杂,特别是在矩形数量很大时。为了解决这个问题,扫描线法应运而生。 想象一下,有一根看不见的直线从下到
阅读全文
摘要:题目传送门 将题意转化一下:将序列变为单调上升等价于逆序对总数量为 。 首先看到交换相邻两个数,立马反应过来这种操作最好情况会使逆序对总数减一。 为什么呢? 首先肯定要前面大于后面才交换,否则一定不优。 假设前为 ,后为 ,钦定我们计算逆序对的方式是从后往前,依次看每个
阅读全文
摘要: 前言 本篇文章主要记录笔者 NOIP 冲刺阶段复习的各种数据结构题型及 tricks ans tips,同时也用于及时复习与巩固。 那么,开始吧。 树状数组、线段树 知识点 :二维偏序 众所周知,逆序对可以用归并排序离
阅读全文
摘要:扫描线的运用及其思路 扫描线是一种求矩形面积并/周长并的好方法 假设在一个平面上有几个矩形,要求它们共覆盖了多大的面积。由于矩形可能会有重叠的地方,所以最后要求的图形就是一个不规则的图形。 要求它的面积十分复杂,特别是在矩形数量很大时。为了解决这个问题,扫描线法应运而生。 想象一下,有一根看不见的直
阅读全文