![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高级数据结构板子
文章平均质量分 71
星辰大少主
重庆oier
展开
-
学习笔记:并查集
并查集这是一个可以实现合并与查找(元素间关系判定)用来维护多集合(功能多样化)的超牛批的可以动态维护的树形结构。个人理解:这个算法只要是实现集合元素关系的类型都可以用到,又是线性时间复杂度,而且最关键的是它是个高级数据结构,翻译过来就是这个可以动态维护,所以我觉得这个用途比单纯的算法要好,实际应用比较大,而且这个方法可能不是唯一的,但是用这个方法可以做很多题,比如二分图中用到动态维...原创 2018-04-09 22:37:34 · 227 阅读 · 0 评论 -
学习笔记: 进阶版树状数组(区间修改区间查询以及查询第K大元素)
导树状数组相信大家都很熟悉了,而今天我将会为大家带了一些更加全面的操作,并且欢迎补充哦。其实我想说的是,除了RMQ,线段树能做的,树状数组都能做。换句话说,这是一个稍微进阶版的的树状数组,读者至少要会单调修改区间查询这个最基本的操作。树状数组应该算是常数非常小的数据结构啦。而小生特别喜欢这个数据结构,这是因为它特别短,就是又短又快!核心操作:lowbitint ...原创 2018-02-18 14:35:52 · 1318 阅读 · 2 评论 -
学习笔记:树链剖分
前言对于树的形态不改变但是需要对路径进行修改操作的,数量剖分就是一个很好的选择,也就是把树弄成链状的然后用数据结构去维护它。哎哎哎,我突然发现树剖出来的也是DFS序,只是一种特殊的DFS序而已,因此可以维护子树啊!原理为了把树上的东西变成线性的,我们采取的办法就是把树弄成若干条链,并且放在一个序列中,这样就可以被一般的数据结构维护了,然后链一段一段的选取修改或者查询,这就是数量...原创 2018-02-19 19:50:28 · 139 阅读 · 0 评论 -
学习笔记:CDQ分治
前言感觉这是个很厉害的算法呀,因为到处都在用,然而网上资料不是很多,到底是为什么呢?在终于参透了其中的奥妙之后我发现:它只是一个策略而已了。而且,不难。原理简述它用来干什么?用于顶替一些复杂的数据结构,说白了呢,就是好写常数小。换一种理解方式呢,就是你不会也没什么关系。当然有时候它的确是可以化简太多了,因为树套树什么的的确不好写哈,所以还是要学的。还有个好处就是它占...原创 2018-02-22 17:37:28 · 262 阅读 · 0 评论 -
学习笔记:莫队算法(还有给自己的坑)
简述有人说莫队算法说是一个优雅的暴力,很有道理,我认为是一个优雅的分块。作用对于有些线段树等高级数据结构无法维护的操作,就考虑用莫队吧。毕竟这是一个O(n^1.5)的算法,肯定功能比log的强大。适用范围离线可以在知道[L,R]的情况下,快速推出[L+1,R],[L-1,R],[L,R+1],[L,R-1]的情况。算法原理先对询问排序,然后暴力转移...原创 2018-03-12 23:28:31 · 589 阅读 · 0 评论 -
板子:LCT(现在都不敢说自己写的是学习笔记了)
以后Splay就只记LCT的,其他的用treap 简述LCT的大概思想是这样的:每一条重链都是一颗Splay,其中深度为键值(要把握住它是一条连,而且键值不会重复)同一重链结点之间的连边是通过Splay内部连边完成的轻边是通过Splay的根结点的父亲连接,但是该父亲不会指向该根结点(著名的儿子认父亲,父亲不认儿子问题)(Splay的根结点的父亲是Splay在原树中顶端结...原创 2018-03-27 21:53:41 · 808 阅读 · 0 评论 -
学习笔记:分块
分块需要个什么学习笔记!?这只是一个非常牛叉的思想,支持数据的修改、查询,把数据分成个n^1/2个长度为n!1/2的块,可以很方便的查找、修改,查找就是一块接一块地跳,修改就是把整块重新弄,时间复杂度都是O(n^1/2)。来一段初始化代码,当然也可以不要这个,可以通过代数运算算出来。还有就是要注意调试的时候小数据有可能块都不会垮,所以可以尝试把块改小一点,当然也可以大数据对拍。还有...原创 2018-02-21 17:14:54 · 174 阅读 · 0 评论 -
学习笔记:KD-TREE
前言一个感觉特别单一的数据结构啊,Po大爷才写两个这个题呢。然后仔细研究了一下KD-TREE为什么要这样做,发现其中的每一个操作都是很巧妙的。原理简述(瞎逼逼)KD-Tree确实应该算是计算几何的一种东西了吧,可以看作线段树的高维推广还自带离散功能。KD-Tree也是一个二叉树,并且除了叶子结点外,每个结点都代表了一堆点,叶子结点则代表了一个,和线段树是很像的。每个点我...原创 2018-02-21 21:40:50 · 1080 阅读 · 0 评论 -
学习笔记:平衡树Treap(非旋转)维护序列
前言找了半天网上的资料,说实话真的不好找哎,然后对着硕果仅存的几篇博客理解了半天。。。。依旧没有弄出什么结论来。于是嘛。。。就只有对着以前抄的代码理解咯。。发现还是有效果的基本原理如果你用平衡树维护集合都不会的话,那你可以出门左拐,看看我的其它平衡树学习笔记这里造成的一个很大的理解障碍就是它的确和用平衡树维护集合有区别的,其中最大的区别就是维护序列的时候给每个结点挂了一个权...原创 2018-02-17 21:13:35 · 564 阅读 · 0 评论 -
板子:可持久化数据结构
可持久化线段树基本思想一种牺牲一点空间来达到更多操作的数据结构,似乎可以部分代替平衡树,并且是个在线的过程。至于更多的细节打算以后去拜读cls的大作吧,先把基本的弄了来。思想就是单点修改只需要修改一部分的点,共用一部分的点,然后用来作各种各样的操作,区间修改也是可以的,但是要稍作改动。还有就是那个所谓主席树就是指以下标为时间的权值可持久化线段树。至于觉得可持久化线段树很鸡肋...原创 2018-04-09 22:50:39 · 282 阅读 · 0 评论