摘要:
首先请看定义:一、最近公共祖先(Least Common Ancestors) 对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。另一种理解方式是把T理解为一个无向无环图,而LCA(T,u,v)即u到v的最短路上深度最小的点。 这里给出一个LCA的例子: 例一 对于T=<V,E> V={1,2,3,4,5} E={(1... 阅读全文
摘要:
后缀数组就是将字符串所有后缀排序后的数组,设字符串为S,令后缀Suffix(i)表示S[i..len(S)]。用两个数组记录所有后缀的排序结果:Rank[i]记录Suffix(i)排序后的序号,即Suffix[i]在所有后缀中是第Rank[i]小的后缀SA[i]记录第i位后缀的首字母位置,即Suffix[SA[i]]在所有后缀中是第i小的后缀然后就是怎么快速求所有后缀的顺序了,其中的关键是如何减少... 阅读全文
摘要:
2009-10-25 09:05后缀数组是处理字符串的有力工具,后缀数组可以解决大多数后缀树解决的问题,由于它的实现要比后缀树简单,因此深受广大ACM爱好者的喜爱,当然还是有一些问题只有后缀树能解决的问题,等学习了后缀树再将其添上。后缀数组最常用的是求取最长公共前缀。后缀suffix数组,suffix【i】表示从第i个字符开始的后缀;后缀数组sa,保留1~n的某个排列,保证suffix【sa【i】... 阅读全文
摘要:
字符串最小表示:[代码] 阅读全文