![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
ZBoWing
这个作者很懒,什么都没留下…
展开
-
【模板】主席树模板
#include<bits/stdc++.h>using namespace std ;const int maxn = 2e5+7 ;int n,m ;int a[maxn],b[maxn],rt[maxn<<5],ndnum ;int lson[maxn<<5],rson[maxn<<5],sum[maxn<<5] ;...原创 2019-10-24 20:01:13 · 141 阅读 · 0 评论 -
并查集的再次进阶,从实际情况中分离出模型
今天我们再来谈一谈并查集的深度运用:从实际问题中分离出并查集的模型这是我们机房模拟赛的DST2:乍一看我们对这道题一脸懵逼,不过不要慌,先来分析一下这道题的要求:来看一看一个2x2的棋盘:a bc d1个棋盘如果合法,那么就满足c+b=a+d移项就会发现a-b=c-d仔细一想不就是每一列之间的差都为定值吗?同列也可以得到每一行之间的差也相等。“对于任意一列,两行之间的差相...原创 2019-07-10 14:41:58 · 156 阅读 · 0 评论 -
Splay详讲
编者注:(为了更好的理解Splay,需要读者对Treap有一定的了解)那么话不多说,我们直接进入正题吧:什么是Splay伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(log n)内完成插入、查找和删除操作。学过Treap的人或许会问那么Treap和Splay到底有什么区别呢?其实很简单,相比于Treap,Splay能够更好的处理区间的问题,虽然Treap好像也可...原创 2019-07-10 21:15:23 · 590 阅读 · 0 评论 -
线段树
关于对线段树模板的简化:在刚开始学线段树时,我们学习的是利用完全二叉树的性质来建立子节点:左儿子的节点等于父亲节点序号乘2,右儿子的节点的序号等于左儿子的节点数加1,并且选用结构体的方式来存储信息。大概就是这样一个思路。由于考虑到结构体引用慢,并且在可持久化线段树(主席树)中,已经不满足完全二叉树的性质,为了统一线段树的写法,建议大家统一使用动态开节点建树的方法。变量名的改变变化不大,列举如下...原创 2019-07-08 19:39:27 · 302 阅读 · 0 评论 -
树链剖分模板
树剖大法好!!!!!!#include<bits/stdc++.h>#define maxn 500005using namespace std;struct edge{ int pre,to;}e[maxn*2];int n,m,root,mod,a[maxn],b[maxn],head[maxn],cnt=0,fa[maxn],dep[maxn],son[max...原创 2019-08-05 18:45:17 · 108 阅读 · 0 评论