
数据结构
文章平均质量分 79
flora715_hss
纸飞机,载着岁月飞散在风里.
所有羁绊都归于平淡,誓言悉数服从命运的安排.
——时间划过风的轨迹,那个少年,还在等你.
展开
-
【暖*墟】 #洛谷省选网课# 7.31树上问题的进阶
【树上问题的进阶】 目录一. 树上前缀和例题1 前缀和+lca例题2 链式修改+树上差分例题3 前缀和+异或例题4 前缀和+Kth关于主席树二. dfs序例题5 dfs序+线段树三. 轻重链剖分树链剖分之轻重链讲解轻重链剖分的应用例题6 查询u到v路径上的权值和例题7 查询所有与u相邻点的权值和 四.换根意义下的操作换根求...原创 2018-07-31 10:17:42 · 620 阅读 · 0 评论 -
【浮*光】 #树状数组# 洛谷P2161 [SHOI2009]会场预约
题目大意设计一个数据结构,支持两种操作: 1. A i j 添加一个新的预约[i,j],并删除所有与其冲突的预约。 返回此次操作删除的预约的个数。2. B 返回当前的预约总数。方法分析A操作的真实目的:查询一个区间中有多少种颜色。并且清空所有在该区间中的颜色,把区间修改成另一种颜色。因为任何时候区间的末端、都会随始端递增而递增,所以可以用差分的方法。用树状数组维护【始端个...原创 2018-09-28 16:13:29 · 285 阅读 · 0 评论 -
【暖*墟】 #数据结构进阶# 树链剖分
一. 树链剖分原理和实现1.树链剖分的概念用途:在一棵树上进行路径的修改、求极值、求和。树链,就是树上的路径。 剖分,就是把路径分类为 重链 和 轻链 。 树链剖分就是把一些点合成一条路径,使其在线段树中的下标有序,用线段树来维护。 这样就可以使得查询、修改的效率大大提高。 假设我们把路径分好链了,每次询问两个点对(x,y)时, 若 x 和 y 在同一链中,直接询问线段树...原创 2018-08-21 15:09:44 · 218 阅读 · 0 评论 -
【暖*墟】 #数据结构进阶# 主席树超详细解释
主席树【可持久化线段树/函数式线段树/n棵线段树】 目录一. 概念理解1.求所有数字中的第k大数?2.求任意一段区间 [ L , r ]中的第k大数?3.会不会空间超限?超级详细的实现过程分析【戳我戳我qwq】二. 例题演练1 【主席树】第K小的数Ⅰ(caioj1441)2 【主席树】第K小的数Ⅱ(caioj1442)3 【主席树】第K小的数...原创 2018-08-23 17:29:39 · 377 阅读 · 0 评论 -
【暖*墟】 #初级数据结构# 倍增求LCA && LCA的Tarjan算法
一. 知识引入LCA即最近公共祖先,即有根树中x,y的公共祖先中深度最大的一个节点。求最近公共祖先的方法:暴力法,向上标记法,树上倍增法,Tarjan算法。【“暴力”法】先 dfs求出对应点的 dep(深度),深度大的向上跳到与深度小的同一深度,比较是否相同,不相同的话,两者一起往上跳。【向上标记法】O(N)从x点向上走到根节点,标记所有经过的节点。从y点向上走...原创 2018-08-20 17:31:38 · 205 阅读 · 0 评论 -
【暖*墟】 #初级数据结构# 分块
分块的概念与运用【例题1】单点修改+区间查询【例题2】区间修改+单点查询【例题3】区间修改+区间查询【例题4】bzoj 2724 蒲公英【例题5】bzoj 2038 小Z的袜子分块的概念与运用通过适当的划分,预处理一部分信息并保存下来。用空间换取时间,达到时空平衡。易实现。【例题1】单点修改+区间查询SOLUTION1将查询区间分成中间整块+零散...原创 2018-08-20 16:39:47 · 354 阅读 · 0 评论 -
【浮*光】 #线段树# bzoj 1798 维护序列
【bzoj 1798】【luogu p3373】线段树模板题序列a1,a2,…,aN。有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2)把数列中的一段数全部加一个值; (3)询问数列中的一段数的和。 由于答案可能很大,你只需输出这个数模P的值。【分析】线段树,维护两个标记,加为 tmp_1,乘为 tmp_2。加x的操作变为:乘1+x ; 乘c的操作变为:乘c+0 ...原创 2018-08-20 14:55:56 · 149 阅读 · 0 评论 -
【暖*墟】 #初级数据结构# 线段树
【概念引入】用途:单点修改,区间查询 && 区间修改,单点查询 && 区间修改,区间查询 。线段树是二叉树,每个节点对应的是序列的一段区间。根节点对应整个区间。每个节点对应区间为 [ l , r ]。l=r时,是叶节点,没有左右儿子;否则有两个儿子,令mid=(l+r) / 2,则左儿子对应区间为 [ l , mid ],右儿子 [ mid+1 ...原创 2018-08-20 11:01:43 · 155 阅读 · 0 评论 -
【暖*墟】 #洛谷提高网课# 8.1初级数据结构(1)
链表 当平时使用数组时,有时会遇到一些问题:在删除一个数据时,为了保证数据的连续性, 需要将删除点右边的数据、全部往左移一格。 在插入一个数据时,为了保证数据的连续性, 需要将插入点右边的数据、全部往右移一格。 每次移动的时间复杂度为O(N),如果元素较多时会时间超限。 链表一个位置包括了自己位置上的值和下一个值所在的位置。这样链表就可以实现O(1)的插入/删除,同时保...原创 2018-08-01 14:31:28 · 602 阅读 · 0 评论 -
【暖*墟】 #初级数据结构# 树状数组
目录lowbit单点修改查询前缀和练习优缺点拓展:多维树状数组拓展:树状数组与逆序对树状数组重点:维护前缀和;快速单点修改;快速区间求和;不能计算区间最值。易错点:根节点一定要从1开始。因为lowbit(0)=0,会陷入死循环。正整数x被 “ 二进制分解 ”,使区间[1,x]分成 logx 个子区间。(唯一分解性质)小区间特点:若结尾...原创 2018-07-17 14:31:58 · 230 阅读 · 0 评论 -
【暖*墟】 #trie# 字典树的运用
Trie,又称字典树是一种用于实现字符串快速检索的多叉树结构。每个节点都拥有若干个字符指针,若在插入或检索字符串时扫描到一个字符c ,就沿着当前节点的c这个字符指针,走向该指针指的节点。下面我们来详细讨论Trie的基本操作过程。初始化一棵空Trie仅包含一个根节点,该点的字符指针均指向空。********* 根节点表示空串。*********插入当需要插入一个...原创 2018-07-20 10:05:25 · 172 阅读 · 0 评论 -
【暖*墟】 #哈夫曼树# k叉Huffman树的贪心求解
【哈夫曼树,又称最优二叉树】 贪心求解k叉哈夫曼树 在最底层补加一些权值为0的点(叶子节点),使叶子节点的个数满足(n-1)mod(k-1)=0 。执行操作时,“每次从堆中取出最小的k个权值”。第一步:先将n个数从小到大排序一次,放入第一个数组a;新建一个数组b,在a中取最小的k个数合并成一个新的数放入数组b的末尾。之后,每次从两个数组里挑选出k个最小的数合并再...转载 2018-07-21 14:39:57 · 807 阅读 · 0 评论 -
【暖*墟】 #树与图# 树与图的入门知识点
目录【一. 时间戳(dfn)】【二. 树的dfs序】1.dfs序的作用2.dfs序的图解3.dfs序的代码4.例题:poj3321 Apple Tree 【三. 树的深度、直径和重心】1.树的深度2.树的直径与重心【四. 图的连通块划分】1.连通块的定义2.求图中连通块的个数【一. 时间戳(dfn)】什么是时间戳? 就是每个...原创 2018-07-25 15:04:34 · 522 阅读 · 0 评论 -
【暖*墟】 #数据结构# 分块入门训练题1~9
引入 foreword数列分块就是把数列中【每m个元素打包起来】,达到优化算法的目的。把每m个元素分为一块,共有n/m块,区间修改涉及O(n/m)个整块,以及两侧两个不完整的块。每次操作对每个整块直接标记,而由于不完整的块的元素比较少,暴力修改元素的值。每次询问时返回元素的值加上其所在块的加法标记。每次操作的复杂度是O(n/m)+O(m)。根据均值不等式,当m取√n时总复杂度...原创 2018-10-20 16:55:08 · 815 阅读 · 1 评论