合集-数据结构

摘要:前言: 带修主席树的本质并不是主席树,而是树状数组套权值线段树!它并没有可持久化! 所以并没有将这个知识点放到可持久化数据结构的博客里,而是单独拎出来。 正题 刚学习了用可持久化线段树解静态区间第 k 小,那么拓展一下:如果在此基础上加上单点修改,阁下又该如何应对? P2464 [SDOI2 阅读全文
posted @ 2024-07-23 14:37 Brilliant11001 阅读(88) 评论(2) 推荐(1) 编辑
摘要:0x00 简介 可持久化就是通过每次修改都创建新版本,来保留数据结构回滚与访问历史版本的能力。 可持久化分为两类: 部分可持久化:所有版本都可以访问,但是只有最新版本可以修改; 完全可持久化:所有版本都既可以访问又可以修改。 注意:一个数据结构可持久化当且仅当它的拓补结构在 阅读全文
posted @ 2024-07-23 14:35 Brilliant11001 阅读(16) 评论(0) 推荐(0) 编辑
摘要:0x00 简介 伸展树,也叫 Splay,是平衡树的一种。所以它也满足二叉搜索树的所有性质。Splay 灵活多变,应用广泛,能够很方便地支持各种动态的区间操作,码量适中。 定义 struct node { int s[2] 阅读全文
posted @ 2024-07-23 14:33 Brilliant11001 阅读(21) 评论(0) 推荐(0) 编辑
摘要:前置芝士: BST(二叉搜索树)和 heap(堆) (其实 Treap 这个名字就是由 treeheap 拼出来的 ) \(\texttt{Tr 阅读全文
posted @ 2024-02-01 10:21 Brilliant11001 阅读(21) 评论(0) 推荐(0) 编辑
摘要:二叉搜索树的定义及性质 二叉搜索树(Binaty Search Tree)简称 BST,它拥有“BST 性质”,这也是平衡树的基础。 给定一棵二叉树,树上的每一个节点带有一个权值。所谓“BST阅读全文
posted @ 2024-02-01 10:20 Brilliant11001 阅读(79) 评论(0) 推荐(0) 编辑
摘要:Origin ODT (Old Driver Tree),中文名珂朵莉树。 有人为了 CF896C 发明了这个算法,这道题又和珂朵莉有关,所以这个算法叫做珂朵莉树。 另外,由于发明者 lxl 的原因,也珂叫 \(\text 阅读全文
posted @ 2024-02-01 10:18 Brilliant11001 阅读(101) 评论(0) 推荐(0) 编辑
摘要:set 是什么 setC++ STL 中提供的容器,set 也是数学上的集合——具有唯一性,即每个元素只出现一次,而 multiset 则是可重集,两者的内部实现是 阅读全文
posted @ 2024-02-01 10:13 Brilliant11001 阅读(12) 评论(0) 推荐(0) 编辑
摘要:前言 虽然分块是一种数据结构,但是我认为它更像一种思想:分部分处理序列。 虽然分块的时间复杂度一般比树状数组和线段树高,但是它能解决很多树状数组和线段树解决不了的事情。比如:树状数组和线段树在维护不满足区间可加、可减性的信息时显得吃力,代码实现也不简单直观。这时候,常常就要请出我们的分块大法啦。 它 阅读全文
posted @ 2024-01-23 19:55 Brilliant11001 阅读(22) 评论(0) 推荐(0) 编辑
摘要:引入 根据任意正整数关于 2 的不重复次幂的唯一分解原理性质,若一个正整数 x 的二进制表示为 ak1ak2a2a1a0,其中等于 1 的位是 {ai1,ai2,,aim}阅读全文
posted @ 2024-01-23 19:54 Brilliant11001 阅读(19) 评论(0) 推荐(0) 编辑
摘要:简介: 线段树(Segment Tree) 是一种高级数据结构,是一种基于分治思想的二叉树结构,主要用来处理区间问题。它可以在 O(logn) 的时间复杂度内维护序列中满足结合律的变量,例如:maxmin 和 \(\op 阅读全文
posted @ 2024-01-23 19:53 Brilliant11001 阅读(17) 评论(0) 推荐(0) 编辑
摘要:5.并查集 它有两个功能:将两个集合合并和询问两个元素是否在同一个集合内。 不妨设想一下,假如不使用并查集,用暴力的做法,那么第一个操作的时间复杂度约为 O(n),第二个操作的时间复杂度为 O(1),第一个操作的时间复杂度较高。 但如果使用了并查集,则可以将近 O(1) 的时 阅读全文
posted @ 2023-09-26 15:41 Brilliant11001 阅读(8) 评论(0) 推荐(0) 编辑
摘要:0x00:前置芝士 归并排序; 树状数组; 重载运算符(这个大概都会吧)。 0x01:介绍 cdq 分治是一种离线分治算法,可用来处理以下几种问题: 解决和点对有关的问题。 1D 动态规划的优化与转移。 通过 CDQ 分治,将一些动态问题转化为静态 阅读全文
posted @ 2024-07-23 15:09 Brilliant11001 阅读(24) 评论(0) 推荐(0) 编辑
摘要:0x00:前置芝士 二叉搜索树 堆 单调栈 0x01:概念 笛卡尔树是一种二叉树,每一个结点由一个键值二元组 (k,w) 构成。要求 k 满足二叉搜索树的性质(左小右大),而 w 满足堆的性质(大根堆或小根堆)。 q1:这么 阅读全文
posted @ 2024-07-23 15:10 Brilliant11001 阅读(18) 评论(0) 推荐(0) 编辑
摘要:1. 离线树状数组 介绍 有一类经典问题:给定一个序列,每次询问一个区间内的元素种类数。 这种题的做法有很多:莫队、分块、主席树……在不强制在线的情况下,他们的效率都较低,有一种效率高、空间小的离线做法:离线树状数组。 例题: P1972 [SDOI2009] HH的项链 题目大意 给定一个长度为 阅读全文
posted @ 2024-08-04 19:18 Brilliant11001 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目传送门 题目大意: 给定一个长度为 n 的序列,q 次询问区间 [l,r] 内只出现过一次的数有多少个。 思路: 很明显带修莫队可以做。 复习一下,带修莫队就是在普通莫队的基础上加上了时间轴,把操作分为询问操作和修改操作两种分别存下来。 因为修改是有顺序的,每次修改只会 阅读全文
posted @ 2024-09-04 20:34 Brilliant11001 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目传送门 扫描线是一种求矩形面积并或周长并的好方法。 假设在一个平面上有几个矩形,要求它们共覆盖了多大的面积。由于矩形可能会有重叠的地方,所以最后要求的图形就是一个不规则的图形。 要求它的面积十分复杂,特别是在矩形数量很大时。为了解决这个问题,扫描线法应运而生。 想象一下,有一根看不见的直线从下到 阅读全文
posted @ 2024-09-15 20:55 Brilliant11001 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目传送门 将题意转化一下:将序列变为单调上升等价于逆序对总数量为 0。 首先看到交换相邻两个数,立马反应过来这种操作最好情况会使逆序对总数减一。 为什么呢? 首先肯定要前面大于后面才交换,否则一定不优。 假设前为 i,后为 j,钦定我们计算逆序对的方式是从后往前,依次看每个 阅读全文
posted @ 2024-10-22 19:51 Brilliant11001 阅读(24) 评论(0) 推荐(0) 编辑
摘要:0x00 前言 本篇文章主要记录笔者 NOIP 冲刺阶段复习的各种数据结构题型及 tricks ans tips,同时也用于及时复习与巩固。 那么,开始吧。 0x01 树状数组、线段树 知识点 1:二维偏序 众所周知,逆序对可以用归并排序离 阅读全文
posted @ 2025-01-19 11:17 Brilliant11001 阅读(20) 评论(0) 推荐(0) 编辑
摘要:扫描线的运用及其思路 扫描线是一种求矩形面积并/周长并的好方法 假设在一个平面上有几个矩形,要求它们共覆盖了多大的面积。由于矩形可能会有重叠的地方,所以最后要求的图形就是一个不规则的图形。 要求它的面积十分复杂,特别是在矩形数量很大时。为了解决这个问题,扫描线法应运而生。 想象一下,有一根看不见的直 阅读全文
posted @ 2024-02-01 10:20 Brilliant11001 阅读(152) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示