随笔分类 -  数据结构

摘要:#虚树 讲解 ##模板 点击查看代码 struct Tree{ //原树 int tot,head[maxn],nx[maxn],to[maxn]; ll w[maxn]; void add(int x,int y,ll z){ to[++tot]=y;nx[tot]=head[x];head[x] 阅读全文
posted @ 2022-07-26 16:45 I_N_V 阅读(33) 评论(0) 推荐(0) 编辑
摘要:##分治 分治作为一种思想在算法中被广泛使用,比如归并排序、线段树之类的算法都是使用了分治的思想。 除了这些算法的底层原理,分治单独拿出来运用的其中一种场景是作为一种统计类算法使用。 统计类问题一般指不带修改,静态查询类的问题。但是不同于静态查询问题,统计类问题一般要求“全查”,例如枚举所有的子区间 阅读全文
posted @ 2022-07-20 13:49 I_N_V 阅读(42) 评论(0) 推荐(0) 编辑
摘要:##动态树 树上查询问题是指,给定一个图论中的树结构,需要对树上的子树或者链进行一系列增删改查的问题。 和序列问题中一般常说的“动态”和“静态”不同。 动态树问题一般指树结构发生改变。 *注意:一般对于纯换根(change root)操作,不视为是动态树问题。 #LCT结构 ###前置知识1:链分解 阅读全文
posted @ 2022-07-19 15:02 I_N_V 阅读(43) 评论(0) 推荐(0) 编辑
摘要:参考博客 ##子树类查询问题 dsu on tree和长链剖分都是解决子树类静态查询问题的统计类算法。 这类问题首先要是“子树”查询,并且是“静态”不带修改的。 注意某些问题其实不太有必要上dsu on tree,比如子树元素和,子树元素最大值之类的。(可合并区间信息) 例如子树众数,子树元素种类数 阅读全文
posted @ 2022-07-13 22:57 I_N_V 阅读(75) 评论(0) 推荐(0) 编辑
摘要:#树链剖分 树链剖分是为了解决树上链信息维护的问题。 利用线段树等结构,可以维护数组中的增删改查问题。 树链剖分的作用其实就是将整颗结构树分解成若干段数组,然后使用一个数据结构来维护每一条链的信息 (一般来讲不会使用平衡树去维护树链,不然你还不如直接上LCT呢) 如果是数组上的问题,一般直接使用线段 阅读全文
posted @ 2022-07-08 15:31 I_N_V 阅读(56) 评论(0) 推荐(0) 编辑
摘要:####二叉树 对于一颗二叉树,它有三种遍历方式:前序、中序、后序 前序(根左右),中序(左根右),后序(左右根) 这三种顺序其实都有使用的场景(主要是在分治算法中考虑是递归前,递归进行中,递归后)的区别。 ###多叉树 在多叉树里面,常用的dfs序其实也有三种:dfs序、扩展dfs序、欧拉序 df 阅读全文
posted @ 2022-07-08 12:49 I_N_V 阅读(435) 评论(0) 推荐(0) 编辑
摘要:###CDQ分治 总体来讲,学过CDQ分治的人会说这个算法是“偏序的魔术师”。 CDQ分治是cdq发明的算法,它的前身是“分治求逆序对”。 换句话说,整个算法来自于“归并排序”的扩展,就是在归并排序的基础上多做了一点而已。 ####求逆序对 逆序对 点击查看代码 #include<bits/stdc 阅读全文
posted @ 2022-05-11 21:50 I_N_V 阅读(531) 评论(0) 推荐(0) 编辑
摘要:###可持久化数据结构 可持久化数据结构要求在每次进行数据结构的维护后都保存一个历史版本,并且支持对这些历史版本的数据结构进行再操作。 这就使得可持久化数据结构具有O(1)的版本维护和拷贝的特性。 比如O(1)复制整个数据结构,O(1)回退到某个历史版本。 我们想一下,其他的数据结构是否都能可持久化 阅读全文
posted @ 2022-05-09 22:26 I_N_V 阅读(63) 评论(0) 推荐(0) 编辑
摘要:###莫队 首先对序列进行分块,每个块大小为block 莫队安排的顺序是,首先按照L端点所属的块序号排序,对于L在同一组的块,对R端点单调递增。 因为L被分了组,所以L端点移动的复杂度不会大于block 那R端点呢,因为R端点在每组内移动都是单调的,所以总移动次数为$\frac{N}{block}\ 阅读全文
posted @ 2022-05-01 14:23 I_N_V 阅读(81) 评论(0) 推荐(0) 编辑
摘要:####倍增 倍增是一种基于二进制待定系数的二分思路,它在一定程度上比l,r,mid的形式需要考虑的边界问题更少,但是它的常数更大。 int x=-1; for(int i=16;~i;i--)if(check(x+(1<<i)))x+=(1<<i); 倍增在树上更常见一点。或者说,在链式结构上更常 阅读全文
posted @ 2022-03-28 22:31 I_N_V 阅读(121) 评论(0) 推荐(0) 编辑

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