2019年9月9日
摘要: 前言 差分约束系统是一种特殊的N元一次不等式组,不等式组的每一个不等式称为一个约束条件。通过不等式的变形,可以通过最短路算法对差分约束系统进行求解。 相关定义 约束条件:一个满足​的不等式称为一个约束条件 差分约束系统:一个由若干个约束条件构成的N元一次不等式组称为一个差分约束系统 性质 $i,j\ 阅读全文
posted @ 2019-09-09 11:11 TEoS 阅读(768) 评论(0) 推荐(1) 编辑
  2019年8月20日
摘要: 首先,看清楚了,这是AC自动机不是自动AC机 引用AC自动机模板题上的一句话: ovo 在学习AC自动机之前,应该先掌握一下两个前置技能: Trie KMP AC自动机,通俗地讲,就是在Trie上跑KMP。AC自动机利用Trie的性质和KMP的思想,可以实现字符串的多模匹配。KMP是单模匹配,而它与 阅读全文
posted @ 2019-08-20 17:54 TEoS 阅读(472) 评论(0) 推荐(0) 编辑
摘要: KMP算法, 又称模式匹配算法,能快速判断字符串b是否为字符串a的子串。设a的长度为N,b的长度为N,则KMP算法的时间复杂度为O(N+M)。 在讲解KMP算法之前,先将一种易懂的解决这类问题的方法:枚举a的每个元素$a_i$,每次枚举时比较$a_i$与$b_1,a_{i+1}$与$b_2$,... 阅读全文
posted @ 2019-08-20 17:51 TEoS 阅读(332) 评论(0) 推荐(0) 编辑
摘要: ST算法是求解RMQ问题的好方法,可以在0(NlogN)的预处理后实现O(1)的查询。该算法是在倍增的思想基础上实现的,比较基础,理解起来也不难。 补充几个要点: RMQ问题:即区间最值问题,给出一个序列a,要求求出区间[l,r]内的最大值。 倍增:(来自lyd的蓝书) log2(x)函数:返回$l 阅读全文
posted @ 2019-08-20 13:58 TEoS 阅读(1041) 评论(0) 推荐(0) 编辑
摘要: Trie,又名字典树、单词查找树,可以较高效地实现统计、排序和保存大量的字符串。 顾名思义,Trie是一个树状的结构,按照树型结构来存储字符串,显然是一种以空间换时间的方法。整体上理解和实现都不会很难。 下面是实现方法: 插入: 当我们往一棵Trie中插入一个字符串时,我们先定义一个指针p指向根节点 阅读全文
posted @ 2019-08-20 13:53 TEoS 阅读(490) 评论(0) 推荐(0) 编辑
  2019年8月19日
摘要: 什么是欧拉路径?欧拉路径就是一条能够不重不漏地经过图上的每一条边的路径,即小学奥数中的一笔画问题。而若这条路径的起点和终点相同,则将这条路径称为欧拉回路。 如何判断一个图是否有欧拉路径呢?显然,与一笔画问题相同,一个图有欧拉路径需要以下几个条件: 首先,这是一个连通图 若是无向图,则这个图的度数为奇 阅读全文
posted @ 2019-08-19 13:52 TEoS 阅读(12283) 评论(1) 推荐(2) 编辑
摘要: 树上差分,顾名思义,就是在树上进行差分,以起到优化复杂度的目的。主要作用是对树上的路径进行修改和查询操作,在修改多、查询少的情况下复杂度比较优秀。实际上,树上差分能够实现的操作,用线段树、树剖、$LCT$等等也可以实现,但它的优势在于实现简单,可以避免在考场上出现写题五分钟、调试两小时的情况 当然大 阅读全文
posted @ 2019-08-19 13:47 TEoS 阅读(15548) 评论(1) 推荐(9) 编辑
摘要: LCA,即最近公共祖先,在图论中应用比较广泛。 LCA的定义如下:给定一个有根树,若节点$z$同时是节点$x$和节点$y$的祖先,则称$z$是$x,y$的公共祖先;在$x,y$的所有公共祖先当中深度最大的称为$x,y$的最近公共祖先。下面给出三个最近公共祖先的例子: 显然,从上面的例子可以得出,$L 阅读全文
posted @ 2019-08-19 13:33 TEoS 阅读(3666) 评论(0) 推荐(1) 编辑
  2019年8月15日
摘要: 树链剖分,顾名思义,就是对树剖分成链,然后用数据结构进行维护,以此降低维护的复杂度。 必备知识点 邻接表存图 LCA 线段树 邻接表存图 LCA 线段树 相关定义 重儿子:一个节点所有子节点中以其为根的子树的节点最多的节点 重边:一个节点到其重儿子的边 重链:一条全部由重边构成的路径(特别地,一个节 阅读全文
posted @ 2019-08-15 16:53 TEoS 阅读(887) 评论(0) 推荐(0) 编辑
  2019年8月14日
摘要: 树的直径,又称树的最长链,定义为一棵树上最远的两个节点的路径,即树上一条不重复经过某一条边的最长的路径。树的直径也可以代指这条路径的长度。 求树的直径有两种比较常用的方法:树形DP和搜索,时间复杂度均为$O(n)$。接下来会对两种方法都进行讲解。 在接下来的实现中,树是以邻接表存无向边的形式给出的。 阅读全文
posted @ 2019-08-14 13:47 TEoS 阅读(2812) 评论(0) 推荐(2) 编辑