摘要: 题目链接:POJ - 2774题目分析题目要求求出两个字符串的最长公共子串,使用后缀数组求解会十分容易。将两个字符串用特殊字符隔开再连接到一起,求出后缀数组。可以看出,最长公共子串就是两个字符串分别的一个后缀的 LCP ,并且这两个后缀在 SA 中一定是相邻的。那么他们的 LCP 就是 Height... 阅读全文
posted @ 2015-01-10 16:16 JoeFan 阅读(212) 评论(0) 推荐(0) 编辑
摘要: ---恢复内容开始---题目链接:BZOJ - 1692题目分析首先,有个比较简单的贪心思路:如果当前剩余字符串的两端字母不同,就选取小的字母,这样显然是正确的。然而若两端字母相同,我们怎么选取呢?这时我们要从两端分别向内部比较,看那一端向内的字符串字典序小。比如这个字符串 ABCDBA,从左端向内... 阅读全文
posted @ 2015-01-10 15:07 JoeFan 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 题目链接:BZOJ - 3238题目分析显然,这道题就是求任意两个后缀之间的LCP的和,这与后缀数组的联系十分明显。求出后缀数组后,求出字典序相邻两个后缀的LCP,即 Height 数组。那么我们可以用这个 Height 数组求出所有后缀之间 LCP 的和。我们用 f[i] 表示字典序第 i 的后缀... 阅读全文
posted @ 2015-01-10 10:54 JoeFan 阅读(182) 评论(0) 推荐(0) 编辑