cyendra

Azarath Metrion Zinthos

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2014年8月8日

摘要: 动态树动态树问题, 即要求我们维护一个由若干棵子结点无序的有根树组成的森林。要求这个数据结构支持对树的分割、合并,对某个点到它的根的路径的某些操作,以及对某个点的子树进行的某些操作。在这里我们考虑一个简化的动态树问题,它只包含对树的形态的操作和对某个点到根的路径的操作:维护一个数据结构,支持以下操作... 阅读全文
posted @ 2014-08-08 21:50 cyendra 阅读(890) 评论(0) 推荐(0) 编辑

摘要: 什么是后缀数组后缀树(Suffix tree)是一种数据结构,能快速解决很多关于字符串的问题,缺点是算法复杂难懂且容易出错。而后缀数组、后缀自动机、后缀仙人掌都是后缀树的替代品。后缀数组 Suffix Array 是一个一维数组,它将字符串S的n个后缀从小到大排序后把排好序的后缀的开头位置顺次放入数... 阅读全文
posted @ 2014-08-08 16:46 cyendra 阅读(4038) 评论(0) 推荐(1) 编辑

摘要: *在学习后缀自动机之前需要熟练掌握WA自动机、RE自动机与TLE自动机*什么是后缀自动机后缀自动机 Suffix Automaton (SAM) 是一个用 O(n) 的复杂度构造,能够接受一个字符串所有后缀的自动机。它最早在陈立杰的 2012 年 noi 冬令营讲稿中提到。在2013年的一场多校联合... 阅读全文
posted @ 2014-08-08 16:32 cyendra 阅读(5510) 评论(1) 推荐(2) 编辑

摘要: 什么是数位 DP在信息学竞赛中,有一类难度不大但异常麻烦的问题——数位计数问题,这类问题的主要特点是询问的答案和一段连续的数的各个数位相关,并且需要对时间效率有一定要求。由于解决这类问题往往意味着巨大的代码量,而众多的特殊情况又意味着出现错误的巨大可能性,因此很少有人愿意解决此类问题,但只要掌握好的... 阅读全文
posted @ 2014-08-08 16:06 cyendra 阅读(789) 评论(0) 推荐(0) 编辑

摘要: RMQ(Range Minimum/Maximum Query)问题是求区间最值问题。对于长度为 n 的数组 A,进行若干次查询,对于区间 [L,R] 返回数组A中下标在 [L,R] 中的最小(大)值。可以用线段树来解决这个问题,预处理的复杂度是 O(nlogn),查询的复杂度是 O(logn)。更... 阅读全文
posted @ 2014-08-08 15:56 cyendra 阅读(394) 评论(0) 推荐(0) 编辑

摘要: 计数排序是一个非基于比较的排序算法。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。计数排序的基本思想就是对于每一个输入元素x,确定出小于x的元素个数。有了这一信息就可以把x直接放到它在最终输出数组中的位置上。例如,如果有17个元素小于x... 阅读全文
posted @ 2014-08-08 15:54 cyendra 阅读(391) 评论(0) 推荐(0) 编辑

摘要: 什么是主席树可持久化数据结构(Persistent data structure)就是利用函数式编程的思想使其支持询问历史版本、同时充分利用它们之间的共同数据来减少时间和空间消耗。因此可持久化线段树也叫函数式线段树又叫主席树。可持久化数据结构在算法执行的过程中,会发现在更新一个动态集合时,需要维护其... 阅读全文
posted @ 2014-08-08 15:50 cyendra 阅读(7159) 评论(5) 推荐(11) 编辑

摘要: 什么是树链剖分树链剖分并不是一个复杂的算法或者数据结构,它能把一棵树拆成链。树链,就是树上的路径。剖分,就是把路径分类为重链和轻链。给定一棵树,将它划分成若干条互不相交的路径,满足:从节点 u->v 最多经过 logn 条路径以及 logn 条不在路径上的边。树链剖分后,我们就可以利用其它的数据结构... 阅读全文
posted @ 2014-08-08 15:41 cyendra 阅读(859) 评论(0) 推荐(0) 编辑

摘要: 基本概念LCA:树上的最近公共祖先,对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。RMQ:区间最小值查询问题。对于长度为n的数列A,回答若干询问RMQ(A,i,j),返回数列A中下标在[i,j]里的最小值下标。朴素LCA算法求出... 阅读全文
posted @ 2014-08-08 15:30 cyendra 阅读(1029) 评论(2) 推荐(0) 编辑

摘要: 树的直径树的直径(Diameter)是指树上的最长简单路。直径的求法:两遍搜索 (BFS or DFS)任选一点w为起点,对树进行搜索,找出离w最远的点u。以u为起点,再进行搜索,找出离u最远的点v。则u到v的路径长度即为树的直径。简单证明:如果w在直径上,那么u一定是直径的一个端点。反证:若u不是... 阅读全文
posted @ 2014-08-08 12:14 cyendra 阅读(7397) 评论(0) 推荐(6) 编辑