
Data Structure
文章平均质量分 82
Sky丶Memory
Keep Moving
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
O(N)的素数筛选法和欧拉函数
首先,在谈到素数筛选法时,先涉及几个小知识点.1.一个数是否为质数的判定.质数,只有1和其本身才是其约数,所以我们判定一个数是否为质数,只需要判定2~(N - 1)中是否存在其约数即可,此种方法的时间复杂度为O(N),随着N的增加,效率依然很慢。这里有个O()的方法:对于一个合数,其必用一个约数(除1外)小于等于其平方根(可用反证法证明),所以我们只需要判断2~之间的数即可.b原创 2015-02-20 21:25:07 · 6987 阅读 · 0 评论 -
浅谈Manacher算法与扩展KMP之间的联系
首先,在谈到Manacher算法之前,我们先来看一个小问题:给定一个字符串S,求该字符串的最长回文子串的长度.对于该问题的求解,网上解法颇多,时间复杂度也不尽相同,这里列述几种常见的解法.解法一 通过枚举S的子串,然后判断该字串是否为回文,由于S的子串个数大约为,加上每次判断需要的时间,所以总的时间复杂度为,空间复杂度为.bool check(string &S, int l原创 2015-07-03 22:43:45 · 1205 阅读 · 2 评论 -
Sparse Table讲解
Sparse Tabel名为稀疏表,又称为ST表,可以在O(1)的时间复杂度下完成查询区间最值,相比线段树和树状数组,效率提升了不少.ST表本质上是一个很经典的dp,通过预处理完成O(1)的查询.既然是个dp,那我们来看下dp的定义吧(下面以查询区间最大值为例).dp[i][j]:表示以i为起点,长度为2^j的区间最值那么我们很容易得出状态转移方程:原创 2015-02-03 11:37:18 · 1247 阅读 · 0 评论 -
拓扑排序
原文链接: dzone 翻译: ImportNew.com - 陈 秋林译文链接: http://www.importnew.com/9719.html介绍假设我们有一组任务要完成,并且有些任务要在其它任务完成之后才能开始,所以我们必须非常小心这些任务的执行顺序。如果这些任务的执行顺序足够简单的话,我们可以用链表来存储它们,这是一个很好的方案,让我们可以转载 2014-03-09 17:05:50 · 1118 阅读 · 0 评论 -
迷宫问题
迷宫问题很经典,对于学习搜索很有帮助,特别是针对深搜,下面我们就来看关于迷宫中的一些常见的问题:从起点到终点的最小步数(前提是起点和终点是可达的)打印出起点到终点的所有通路。打印起点到终点的一条最短路径1.先来看第一个问题:从起点到终点的最小步数,迷宫中可能起点到终点存在很多的通路(我们找最小的步数,需要把所有的通路都搜遍,才能确定),而我们只用找最小的那条通路的步数就可以了(我们原创 2013-07-17 21:11:46 · 1561 阅读 · 0 评论