![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Algorithms
codestorm04
这个作者很懒,什么都没留下…
展开
-
判断最长回文子串_codestorm_新浪博客
转自:http://leetcode.com/2011/11/longest-palindromic-substring-part-ii.html原文作者有些地方逻辑上有点小问题,我做了纠正。关于解释时间复杂度上,原作者就只有两句话,我无法理解,特意在此加强了,便于理解。问题:给定字符串S,求S中的最长回文子串。在上一篇,我们给出了4种算法,其中包括一个O(N2)时间O(1)空间的算法...转载 2016-08-22 11:42:12 · 111 阅读 · 0 评论 -
线段树延迟标记精讲_codestorm_新浪博客
转自:http://www.cnblogs.com/TenosDoIt/p/3453089.html#b一 概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(logn)。线段树的每个节点表示一个区间,子节点则分别表示父节点的左右半区间,例如父亲的区...转载 2014-02-27 13:40:22 · 89 阅读 · 0 评论 -
矩阵快速幂_codestorm_新浪博客
转自:http://www.cnblogs.com/yan-boy/archive/2012/11/29/2795294.html矩阵的快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度,降到log(n)。这里先对原理(主要运用了矩阵乘法的结合律)做下简单形象的介绍:一般一个矩阵的n次方,我们会通过连乘n-1次来得到它的n次幂。但做下简单的改进就能减少连乘的次数,方...转载 2014-01-21 12:17:31 · 61 阅读 · 0 评论 -
poj-1082 博弈分析_codestorm_新浪博客
转自:http://www.cnblogs.com/ybrbupt/archive/2011/08/28/2155952.html博弈论题目可以用寻找必败状态的方法解决。第一个必败状态是2001.11.04。由此可以推出其他任何时间的状态。对于除2001.11.04外的其他任何时间,present状态是由能移动到的下两个next状态决定的(当然有些时间只有一个n...转载 2014-01-01 13:06:42 · 76 阅读 · 0 评论 -
poj 1012约瑟夫问题_codestorm_新浪博客
题目不再赘述,本来按照约瑟夫的模拟法复杂度应该是O(m*n^2),若用了数学方法可在每次搜索下一个位置时的k重循环将为1次常数,变为O(m*n)(n=2*k)。但此题并不适合用数学倒推求出前k个元素,因为每轮循环求得的都是当轮的元素坐标,必须倒退到1轮才可转化为真是坐标,复杂度又回到O(n^2)。本题特点为前k个和后k个顺序不变,所以每次虽然有元素缺失无法确切求到新元素位置,但只要“不在...转载 2014-01-04 22:24:59 · 62 阅读 · 0 评论 -
poj 1011 递归搜索+剪枝_codestorm_新浪博客
转自:http://blog.163.com/xdu_cfcry/blog/static/1694623032010718274132/经典搜索题,黑书上的剪枝例题。剪枝的空间很大,剪枝前写下朴素的搜索框架(黑字部分),枚举原始木棍的长度及由那些小木棍组合。原始木棍长度一定是小木棍总长度的约数,因此可以减少枚举量。 越长的木棍对后面木棍的约束力越大,因此要把小木棍排...转载 2014-01-17 16:18:01 · 332 阅读 · 0 评论 -
poj 3233 快速幂+矩阵性质_codestorm_新浪博客
题目要领:1,矩阵的快速幂2.由于相乘一次元素值就很大,且对m取模的话取模时机不影响所以每次都取3.令 B= [ [A A] [0 I] ]则 B^k = [ [A^k A ... A^k] [0 I ] ]则矩阵B的...转载 2014-01-21 12:34:11 · 86 阅读 · 0 评论 -
堆_codestorm_新浪博客
堆常用来实现优先队列,在这种队列中,待删除的元素为优先级最高(最低)的那个。在任何时候,任意优先元素都是可以插入到队列中去的,是计算机科学中一类特殊的数据结构的统称一、堆的定义最大(最小)堆是一棵每一个节点的键值都不小于(大于)其孩子(如果存在)的键值的树。大顶堆是一棵完全二叉树,同时也是一棵最大树。小顶堆是一棵完全完全二叉树,同时也是一棵最小树。注意:堆中任一子树亦是堆。 以上...转载 2014-01-23 11:46:01 · 72 阅读 · 0 评论 -
线段树(segment tree)_codestorm_新浪博客
转自:http://www.cnblogs.com/shuaiwhu/archive/2012/04/22/2464583.html线段树在一些acm题目中经常见到,这种数据结构主要应用在计算几何和地理信息系统中。下图就为一个线段树:(PS:可能你见过线段树的不同表示方式,但是都大同小异,根据自己的需要来建就行。)1.线段树基本性质和操作线段树是一棵二叉树,记为T(a, ...转载 2014-01-26 11:57:04 · 68 阅读 · 0 评论 -
[转载]POJ各题算法分类和题目推荐_codestorm_新浪博客
原文地址:POJ各题算法分类和题目推荐作者:vcjspPOJ各题算法分类和题目推荐KMP算法:2752、1961、2406二分图最大匹配:1274、2536、2239、1466、3041、2771、1469Kruskal和Prim: 2485、1251、1258、1861、3255、1679、1372、2031最大子段和:1050、2593、2479DP:...转载 2014-01-26 12:40:04 · 148 阅读 · 0 评论 -
KMP匹配数组next[]_codestorm_新浪博客
关于KMP算法,关键是生成部分匹配值表,即next[],若用普通算法用集合法进行比照则为l^2复杂度(l长度),以下是线性复杂度的next[]生成算法voidget_next(intn) { inti=0; next[i]=-1; intj=next[0]; while(i<=n...转载 2014-02-07 12:00:48 · 63 阅读 · 0 评论 -
后缀数组_codestorm_新浪博客
后缀数组(suffix arrays)应该目前我看到的算法中最折磨人的一个了,(作者U.Manber:Suffix arrays: A new method for on-line string searches)功能非常强大,字符串匹配的利器。举个小例子先。在多字符串匹配算法中,如果文本长度为n, 模式的数量为k,模式长度为m,KMP算法单字串匹配为线性复杂度,总的复杂度为O(nK)。如果采用后...转载 2014-02-16 20:59:31 · 80 阅读 · 0 评论 -
后缀数组详解_codestorm_新浪博客
转自:http://www.cppblog.com/superKiki/archive/2010/05/15/115421.html【摘要】 后缀数组是处理字符串的有力工具。后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也并不逊色,而且它比后缀树所占用的内存空间小很多。可以说,在信息学竞赛中后缀数组比后缀树要更为实用。本文...转载 2014-02-07 15:58:23 · 128 阅读 · 0 评论 -
poj-1182(带权并查集)_codestorm_新浪博客
转自:http://blog.sina.com.cn/s/blog_88705ca20100ugc2.html算法思路:把那些确定了相对关系的节点放在同一棵树里(可以同时存在多棵树,单独每棵树中节点的相对关系确定),每个节点对应的 v[] 值记录他与父节点的关系( 0:同类; 1:根吃他; 2:他吃根 )。当不在同一棵树上时,只需把 aa,bb 两个根节点连接,并修改变成aa子结点的bb...转载 2014-02-19 15:50:52 · 54 阅读 · 0 评论 -
实现互斥算法_codestorm_新浪博客
Dekker使用代码描述:? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 bo...转载 2015-04-02 21:34:14 · 484 阅读 · 0 评论 -
字符串匹配的KMP算法_codestorm_新浪博客
转自:http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个...转载 2013-12-25 14:45:18 · 187 阅读 · 0 评论