ACM_后缀数组
luke2834
A junior researcher~
展开
-
Codeforces 611D New Year and Ancient Prophecy (Good Bye 2015 D题)
题意 给你一个数字组成的字符串 把它分成几个子串,使得每个串组成的数,没有前导0,且位置在前的字符串组成的数要严格小于位置在后的字符串 问你有多少种不同的分法 思路 dp,dp(i,j)表示以i结尾的子串,它划分后,最后一个串长度小于等于j的分法数。 当更新dp(i,j)时,我们看子串str(0, i-j),它能不能放一个j长的子串,也就是说,如果以i-j结尾的,j长子串 < 以i结尾,j长子串时,原创 2015-12-31 13:40:13 · 768 阅读 · 0 评论 -
leetcode 28 Implement strStr() 练习使用后缀数组
这次主要是利用一道字符串匹配的简单题,自己实现一遍后缀数组 实现 class Solution { public: vector<int> sa, rank, tmp; void getSa(const string& s){ int n = s.length(); for (int i = 0; i < n; i++)...原创 2018-10-03 21:10:16 · 292 阅读 · 0 评论 -
718. Maximum Length of Repeated Subarray 后缀数组解最长公共子串 O(n log^2 n)时间复杂度
题意 找最长公共子串 思路 用dp的方法很容易在O(n^2)解决问题,这里主要讨论用后缀数组的思路解决这个问题 后缀数组里有两个经典的概念或者称为数据结构,就是后缀数组SA,以及高度数组LCP SA数组的定义是:将原串S所有的后缀按字典序排序后,定义rank(i)为后缀S[i…]的排名,SA数组是rank数组的逆映射,即SA(rank(i)) = i LCP数组的定义是:LCP(i)是后缀S...原创 2018-10-06 20:44:50 · 205 阅读 · 0 评论