![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
后缀数组
后缀数组
Top_xiao
这个作者很懒,什么都没留下…
展开
-
2019 USP-ICMC K. Candies
链接 题意: n 个数, 还有 L, R, 问有多少个本质不同的区间和在 L R 之间。 思路: 先考虑一个问题 , 长度为 n 的字符串, 求本质不同的子串有多少个。 n * (n + 1 ) / 2 然后在减去 height[i] , 这种是求总的, 然后减去重复的。 sa 代表排名为 i 的子串在的位置, 然后 height[i] 代表排名为 i 的子串和排名为 i - 1 的子串 重...原创 2020-02-22 22:40:19 · 261 阅读 · 0 评论 -
POJ - 3415 Common Substrings(后缀数组 + 单调栈)
题意: 求两个子串的大于等于k 的重复子串有多少个。 { 求两个子串的重复子串我们可以用单调栈来做, 然而,在同一个子串中,我们想要找重复子串的个数,那就是 height数组之和。 } 思路: 两个子串,我们用后缀数组维护,把两个子串合并在一起,然后中间加一个特殊字符。 { 看网上别人的博客。 一个n长度的子串,我们把后边填一个0,就是在位置n上加0, 这个字符串我们从 0 编...原创 2018-08-18 12:49:48 · 365 阅读 · 0 评论 -
SPOJ - SUBST1 New Distinct Substrings(后缀数组,求不同子串的个数)
求不同子串的个数。 height 数组的和就是一个串的 相同子串的个数。 所以我们把所有子串加起来,然后减去相同子串的个数就可以了。 一开始没有开 long long wa 了好多发。 #include<cstdio> #include<cstring> #include<algorithm> using namespace std...原创 2018-08-18 14:52:37 · 228 阅读 · 2 评论 -
POJ - 2774Long Long Message (神tm的后缀数组)
两个字符串的最长公共子串。 sa 排名是i的子串的位置在哪。 rak 位置是i 的子串排名是多少。 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; const int maxn=200000+100; ...原创 2018-08-17 19:44:37 · 245 阅读 · 0 评论 -
BZOJ 1031: [JSOI2007]字符加密Cipher
Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考。一天,他突然想出了一种他认为是终极的加密办法 :把需要加密的信息排成一圈,显然,它们有很多种不同的读法。例如下图,可以读作: JSOI07 SOI07J OI07JS I07JSO 07JSOI 7JSOI0把它们按照字符串的大小排序:07JSOI 7JSOI0 I07JSO JSOI07 OI07JS SOI07J读出...原创 2018-12-12 16:25:34 · 110 阅读 · 0 评论