随笔分类 -  字符串 后缀数组

摘要:链接: codeforces.com/contest/432/problem/D 题意: 给你一个字符串,求每一个和前缀匹配的后缀在这个字符串中出现的次数 题解: 先算出lcp,找到sa[i]==0的位置标记为beg,和前缀匹配的后缀一定会出现beg的左边,这个想一想明白了 我们先算出beg左边每一 阅读全文
posted @ 2017-09-15 11:43 Flowersea 阅读(361) 评论(1) 推荐(1)
摘要:链接: http://codeforces.com/contest/427/problem/D 题意: 给你两个字符串s1,s2,找出最短的子串出现在s1和s2中有且只有一次 题解: 还是把s1和s2连起来,求lcp。首先要知道得是,最短长度一定是sa数组中一定是相连的, 这样就只需要遍历一遍lcp 阅读全文
posted @ 2017-09-14 14:48 Flowersea 阅读(146) 评论(3) 推荐(1)
摘要:链接: http://poj.org/problem?id=3415 题意: 统计A和B长度不小于K的公共子串个数。 题解: 将A和B拼接后,利用单调栈累计分属两者的后缀对应的LCP-K+1即为答案 代码: 阅读全文
posted @ 2017-09-12 23:21 Flowersea 阅读(165) 评论(1) 推荐(1)
摘要:链接: http://poj.org/problem?id=1509 题意: 给你一个环形字符串,问从哪个地方截断使得得到的字符串字典序最小 题解: 计算s+s的后缀数组,然后遍历sa数组,找到第一个小于n的地方 输出即可 但是直接这样做会wa掉,因为有多个结果时,题目要求输出最小的,看了别人的博客 阅读全文
posted @ 2017-09-12 14:24 Flowersea 阅读(141) 评论(4) 推荐(1)