随笔分类 -  -----字符串处理 4.后缀数组

摘要:题目链接:hdu 5008 Boring String Problem 题意: 给你一个字符串,有q个询问,每次询问该字符串所有的子串中字典序第k小的是哪个串,输出位置,如果有多个位置,输出最靠左的那个。 题解: 后缀数组求完height后,求一下字典序第i的后缀有多少个不同的子串,然后求一下前缀和 阅读全文
posted @ 2017-09-12 16:13 bin_gege 阅读(249) 评论(0) 推荐(0)
摘要:题目链接:hdu 6194 string string string 题意: 给你一个字符串,给你一个k,问你有多少个子串恰好在原串中出现k次。 题解: 后缀数组求出sa后,用height数组的信息去找答案。 每次用k长度的区间去卡height数组,求出该区间的lcp。 该区间的贡献就是ans=lc 阅读全文
posted @ 2017-09-10 20:34 bin_gege 阅读(244) 评论(0) 推荐(0)
摘要:题目链接:hdu 2459 Maximum repetition substring 题意: 让你找一个重复最多的子串,并且输出。 题解: 这个是论文题,看的cxlove的题解,不是很理解为什么这样就能完全找完,当作结论使吧。 1 #include<bits/stdc++.h> 2 #define 阅读全文
posted @ 2017-02-05 12:16 bin_gege 阅读(160) 评论(0) 推荐(0)
摘要:题目链接:poj_3261_Milk Patterns 题意: 给你一串数,让你找重复出现不少于k次的子串的最长长度,重复出现可重叠 题解: 老套路,还是二分答案,然后用height数组来check答案 1 #include<cstdio> 2 #include<algorithm> 3 #defi 阅读全文
posted @ 2016-08-13 01:40 bin_gege 阅读(132) 评论(0) 推荐(0)
摘要:题目链接:poj_1743_Musical Theme 题意: 给你一串数字,让你找最长的变化相同不重叠的子串,至少长度为5 题解: 处理数据后用后缀数组加二分答案,然后用height数组check答案,运用height数组求相同不重叠的子串经典运用 1 #include<cstdio> 2 #in 阅读全文
posted @ 2016-08-12 20:48 bin_gege 阅读(145) 评论(0) 推荐(0)
摘要:题目链接:hdu_3518_Boring counting 题意: 给你一个字符串,让你找不重叠且出现大于1次以上的字串个数 题解: 后缀数组height数组的应用,我们枚举字串的长度,然后将height数组分段,符合条件就ans++ 为什么要这样做,因为height数组存的是相邻排名后缀的最大前缀 阅读全文
posted @ 2016-08-06 18:28 bin_gege 阅读(261) 评论(0) 推荐(0)
摘要:题目链接:hdu_1403_Longest Common Substring 题意: 给你两个字符串,然你找最长的公共子串 题解: 后缀数组的经典应用,要找两个字符串的公共子串,那么就相当于找两个串的后缀的最长公共前缀,我们将两个字符串拼接在一起,中间插一个特殊字符 然后我们考虑height数组,h 阅读全文
posted @ 2016-08-03 17:18 bin_gege 阅读(145) 评论(0) 推荐(0)
摘要:题目链接:hdu_5769_Substring 题意: 给你一个字符a和一个串b,问你有多少个包括a的字串 题解: 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 阅读全文
posted @ 2016-08-02 00:50 bin_gege 阅读(139) 评论(0) 推荐(0)