数据结构
FarmerJohn
Java后端工程师。
肿瘤学研究生;平时也喜欢研究算法、统计学、机器学习、深度学习、贝叶斯分析、临床数据分析、生信数据分析、Android开发。
展开
-
poj字符串总结
1)poj1002 难度:1题意:给你一些字母与数字的对应关系,忽略‘-’,求是否有重复的号码,若有重复则输出重复次数(按字典序输出)。分析:先将所有字符串统一为数字串,然后字符串Qsort。2)poj1200 Crazy Search 难度:2题意: 找出不相同的子串数量,字母表大小和子串长度会给定.分析:将n长的字符串转为nc进制的数字(longint能够承受),并用bool数组标记。对于...原创 2011-10-14 20:37:11 · 4487 阅读 · 0 评论 -
km算法与最佳匹配
KM算法该算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[ i ],顶点Yj的顶标为B[ j ],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[ i ]+B[j]>=w[i,j]始终成立。 KM算法的正确性基于以下定理: 若由二分图中所有满足A[ i ]+B[j]...转载 2011-10-16 15:33:56 · 2031 阅读 · 0 评论 -
后缀树系列三:后缀树的应用
前面两篇转载的后缀树系列文章已经描述了后缀树的线性构建算法。创建后缀树的O(n)算法,除了1995年E. Ukkonen大幅简化的算法,还有Peter Weiner的73年年度最佳算法、Edward McCreight1976的改进算法、Juha Kärkkäinen 和 Peter Sanders2003年进一步简化的线性算法,可以根据自己喜好选择。 转载的本系列文章应该预设有第三篇的(后缀树...原创 2018-05-06 14:41:59 · 3110 阅读 · 0 评论 -
后缀树系列二:线性时间内构建后缀树(包含代码实现)
上一篇文章已经介绍了后缀树的前前后后的知识,并且采用各种技巧逼近线性时间了,至于具体怎么操作大家看完之后应该多多少少有点想法了。而之所以将本文跟上一篇文章分开,主要考虑有三:第一,和在一起文章就会太长了,看的头疼。第二,理论跟实现本来就有差异,本文中一些具体实现并没有严格遵守上文中的条条框框。当然了,主题思想是一样的。第三,本文会从具体实现的角度,在实现过程中进一步阐述上文中的原理...转载 2018-05-06 00:36:43 · 627 阅读 · 0 评论 -
后缀树系列一:概念以及实现原理( the Ukkonen algorithm)
首先说明一下后缀树系列一共会有三篇文章,本文先介绍基本概念以及如何线性时间内构件后缀树,第二篇文章会详细介绍怎么实现后缀树(包含实现代码),第三篇会着重谈一谈后缀树的应用。 本文分为三个部分,首先介绍一下后缀树的“前身”– trie树以及后缀树的概念;然后介绍一下怎么通过trie树在平方时间内构件后缀树;最后介绍一下怎么改进从而可以在线性时间内构件后缀树;一,从t...转载 2018-05-06 00:33:18 · 5315 阅读 · 0 评论 -
poj2054
Poj2054转了大牛XQZ的……(http://hi.baidu.com/cheezer94/blog/item/d98eca065202a2f237d122da.html)给定一棵N个有权值的节点的有根树(默认根节点编号为1)。每个节点的权值为Ci。现在需要遍历这棵树。每访问到一个点,该点的访问代价为这个点的权值与当前未被访问的点的权值之和。遍历顺序为拓扑序,即访问i时i的父亲...转载 2011-10-09 12:22:27 · 1800 阅读 · 0 评论 -
原始线段树
原始线段树模板:program fjsd;var i,j,d,ll,rr,x,n,m,t:longint; l,r,lson,rson,sum,max,sign,a:array[0..100000] of longint;procedure build(i,ll,rr:longint);var mid:longint;begin l[i]:=ll;r[i]:=rr; ...原创 2011-08-30 20:27:09 · 562 阅读 · 0 评论 -
树状数组总结
Poj上的一些题:1)poj1195 Mobile phones 难度:1题意:给定n*n矩阵,和几种在线操作,包括对某一点(x,y)值修改,查询一个矩形(x1,y1,x2,y2)的元素和。分析:用二维树状数组维护即可。2)poj2299 Ultra-QuickSort 难度:1题意:给你n个不同的数,求逆序对个数。分析:有两种方法:归并排序;树状数组。这里提一下树状数组的方法。倒着处理,每次统计...原创 2011-10-18 11:04:56 · 1733 阅读 · 0 评论 -
树的直径与树的中心
1. 树的直径概念:树中的最长路。求法:两次深搜或DP。1-两次深搜:任找一点A为源点,深搜遍历得到最远点B,这个最远点B必定在直径中(感性想想,以A点为源点找到的最长路后面一段必定属于树的直径的一部分);再以这个最远点B为源点深搜遍历求一个最长路,这个最长路即为树的直径。2-DP:显然最长路的两个端点必然是叶子或者根节点。设f(i)表示到i最远的叶子,g(i)表示到i次远的...原创 2011-10-29 17:49:22 · 4043 阅读 · 1 评论