![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 86
T_a_r_j_a_n
这个作者很懒,什么都没留下…
展开
-
[数据结构]--------可持久化线段树(主席树)
前言之前我也会使用主席树,但是都是用别人的模板。我觉得网上的主席树的写法很奇怪已经不是一天两天了,今天我特意写了一种主席树的实现,保留了较多的线段树写法。准备水一篇博客顺便把代码贴上来备用。从现在开始我就有自己的主席树模板了。可持久化权值线段树这是主席树的大名,他是线段树的一种可持久化实现。它维护的是值域,且在对树中信息进行修改时可以保留一份历史版本,在算法竞赛中经常出现。想要保存一个树的历史版本,最简单的办法就是每进行一次修改,就另外新开一棵线段树。但这样会造成时空大爆炸。所以要寻求优化。众所周原创 2021-04-08 20:37:05 · 192 阅读 · 1 评论 -
[数据结构]-------单调栈
单调栈单调栈并非一种新的数据结构,只是栈的一种应用。单调栈中的数据满足单调性,根据要解决问题的不同,栈中数据递增或递减排列都有可能。问题问题一:给定 NNN 个数的数组 AAA,对于每个 iii,找到使 A[j]>A[i]A[j] > A[i]A[j]>A[i],且j>ij>ij>i的最小的 jjj。朴素算法的时间复杂度显然为 O(n2)O(n^2)O(n2),利用单调栈会更优一些。我们需要一个栈底到栈顶,数据依次递减的栈。从后向前扫描,如果当前数字小于栈顶则直原创 2021-03-09 13:04:26 · 140 阅读 · 0 评论 -
[数据结构]----[线段树]-----线段树常见操作和例题
基本操作,单点修改,区间和: 洛谷P3374 【模板】树状数组 1.区间修改,单点查询: 洛谷P3368 【模板】树状数组 2.区间修改,区间求和: 洛谷P3372 【模板】线段树 1.区间最值:洛谷P1531 I Hate It.洛谷P1816 忠诚.洛谷P2880 [USACO07JAN]Balanced Lineup G.区间布尔值取反:洛谷P3870 [TJOI2009]开关.洛谷P2574 XOR的艺术.区间加,区间乘混合区间加,区间乘,区间求和: 洛谷P3373 【模板】原创 2020-12-20 19:58:52 · 344 阅读 · 0 评论 -
数据结构---Sparse Table 稀疏表
Sparse Table(ST表)ST表是解决 RMQ (Range Minimum/Maximum Query) 静态区间最值查询问题的离线数据结构。其预处理时间复杂度为 O(nlogn) ,查询时间复杂度为 O(1),n为序列长度。RMQ 问题也可以用线段树来解决,只不过线段树的查询复杂度为 O(nlogn) 而且代码量大。本文以求最小值为例。算法算法利用了二分和动态规划的思想:设 st[i][j] 表示区间 [i,i+2^j-1] 内的最小值。例:对于序列 3,2,4,5,6,8,1,原创 2020-07-10 22:41:00 · 411 阅读 · 0 评论 -
数据结构--平衡树--普通平衡树
普通平衡树一般说“普通平衡树”, 应该指的就是最早发明的平衡二叉树 “AVL树”。AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis,他们在1962年的论文《An algorithm for the organization of information》中发表了它。为什么发明了平衡树当我们用二叉树维护信息的时候,要进行插入/删除操作。例如下面的一棵二叉树。二叉树体现了一种二分的思想,因此查找信息的期望复杂度在 log级。但是二叉树的形态受操作顺序的影响,例原创 2020-06-12 20:35:01 · 419 阅读 · 0 评论 -
数据结构--并查集
并查集并查集是一种树型数据结构,用于解决不相交集合的合并和查询问题。具体的例子:假设 “朋友” 这个关系满足如下性质:如果 a 和 b 是朋友,那么b 和 a 是朋友。如果 a 和 b 是朋友,b 和 c 是朋友,那么a 和 c 是朋友。一个人和他的所有朋友称为一个 “集体”。现在给出m对朋友关系 (u, v) 表示u 和 v 是朋友,问:给定两个人a 和 b 求他们是否是朋友。一共有多少个 “集体”。...原创 2020-06-10 21:14:23 · 173 阅读 · 0 评论