2010年7月21日
摘要: 字典树,就是树形的字母排列,从根节点开始(根节点不代表任何字母),它的每一个子节点都有一个不同的字母,这样,从根节点开始沿任何路径到达一个叶子节点,路过的字母组合就是一个字符串,字典树在字符串的存储和查找上有很大的优越性,下面是用字典树写的两个题。hdu 1251 阅读全文
posted @ 2010-07-21 10:36 looker 阅读(456) 评论(0) 推荐(1) 编辑
  2010年7月18日
摘要: 什么是不重叠最长子串呢,就是一个串中至少出现两次,又不重叠的子串中的最长的,比较绕口。  解决这个问题的关键还是利用height 数组。把排序后的后缀分成若干组,其中每组的后缀之间的height 值都不小于k。然后找出各个组的后缀的sa值的最大最小值max,min,如果存在 max-min >= k,那么就存在长度为k的不重叠子串,因为根据LCP定理,每个组中的height值都不小于k,就是... 阅读全文
posted @ 2010-07-18 15:54 looker 阅读(2208) 评论(0) 推荐(0) 编辑
摘要: 求若干个字符串的最长公共子串,是后缀数组一个简单的运用,为说明简单起见,设要求的字符串个数是两个。  首先我们先来看一个定义,最长公共前驱,就是常见的LCP,定义lcp(u,v)=max{i|u=v} 也就是从头开始比较u和v的对应字符持续相等的最远值,定义LCP(i,j)=lcp(Suffix(SA[i]),Suffix(SA[j])),也就是SA数组中第i个和第j个后缀的最长公共前缀,关于LC... 阅读全文
posted @ 2010-07-18 15:37 looker 阅读(5089) 评论(0) 推荐(1) 编辑
  2010年7月17日
摘要: 后缀数组相对后缀树来说比较容易构建,应用也比较广泛,和lcp,RMQ问题联合运用在各种竞赛中叶比较热门,究竟什么是后缀数组,怎么构建和应用,是像我这样的初学者遇到的最大的问题。  直观来说,后缀数组是记录一个字符串的后缀的排名的数组,什么是后缀呢,设一个字符串的长度是len(我们约定字符串下标从0开始,所以到len-1结束,比较符合我们日常编程习惯),某一位置i的后缀的就是从i开始到len-1结束... 阅读全文
posted @ 2010-07-17 11:13 looker 阅读(1427) 评论(0) 推荐(0) 编辑
  2010年6月9日
摘要: 个人认为网络流问题是图论里比较简单的东西! 前几天做了pku 1459,用的比较简单的sap,比较郁闷的是无论如何优化时间老是在1000左右转,后来用dinic,几乎同样的代码,用时差不多是别人的十倍,后来想一下,或许,是stl 的问题。。。 今天验证了一下,不错,就是它的原因,因为sap用广搜来找最短增广路,所以用到了队列,但是队列元素很少,一般的网络流节点个数都是三位数量级的,所以,在一次又... 阅读全文
posted @ 2010-06-09 16:03 looker 阅读(535) 评论(1) 推荐(0) 编辑
  2010年6月7日
摘要: 征程开始,前路漫漫啊,我相信,我会站在巅峰!要温习温习前两天学习的东西了,贪多嚼不烂,所以这一周复习,tarjan,三种最短路,特别是贝尔曼,spa,再看看dinic,一些想法要去验证一下,再看看二分匹配,应该一周就过去了吧! ok! 开始,先是tarjan, poj 2186,典型的强连通题,题的实质意思就是一个n个点的单向图,给出路,问图中是否存在所有点都对他可达的点,有的话输出这样的点的个数... 阅读全文
posted @ 2010-06-07 22:39 looker 阅读(308) 评论(1) 推荐(0) 编辑
  2010年6月3日
摘要: 不得不说网络流算法是很让人无语的算法,要想高效率竟然要非递归实现深搜,很无奈,到现在还是在低效率中挣扎!最大流算法的证明就不说了,无非就是最大流最小割定理的推导,定理描述如下:对于任意给定的网络D=(V,A,C),从出发点vs到收点vt的最大流的流量必等于分割的最小截集的容量!至于截集,定义为:给定网络D=(V,A,C),若点集V被分割成两个非空集合V1和V2,使得V=V1+V2,V1∩V... 阅读全文
posted @ 2010-06-03 09:51 looker 阅读(6565) 评论(0) 推荐(1) 编辑
  2010年6月1日
摘要: tarjan基于这样一个定理:在任何深度优先搜索中,同一强连通支内的所有顶点均在同一棵深度优先树中。也就是说,强连通分量一定是有向图的某个深搜树子树。既然强连通分量是深搜树的一棵子树,要找到一个分量,只要找到树根( 连接不同分量的桥的前端顶点) ,然后取出其所属分量的顶点即可。 引理:白色路径定理:在一个有向或无向图G=(V,E)的深度优先森林中,结点v是结点u的后代当且仅当在搜索发现u的时刻d[... 阅读全文
posted @ 2010-06-01 15:36 looker 阅读(491) 评论(1) 推荐(0) 编辑