后缀数组
林黛玉倒拔垂杨柳
你我最后也平凡到自命不凡
展开
-
2020牛客暑期多校训练营(第一场)A B-Suffix Array (后缀数组变形+模板 )
B-Suffix Array 题目大意:给你一个整数n,一个字符串B长度为n,其中对于n个字符串B的后缀设为Bi,但是这个后缀有点不一样,Bi=min1≤j<i,sj=si{i−j},如果不存在这样的 j,那么 Bi=0,先求Bi按照字典序排序,从小到大输出排名 举个例子就比如 字符串为abaab 那么这个字符串拥有的后缀为 序号 原后缀 对应的后缀Bi 1 abaab 00213 2 baab 0013 3 aab 010 4 ab 00 5 b 0 如果对对应的后的Bi排序那就是 5 4 2 1原创 2020-08-17 22:56:35 · 127 阅读 · 0 评论 -
P2870 [USACO07DEC]Best Cow Line G 后缀数组变形
P2870 [USACO07DEC]Best Cow Line G 题目大意:给定一个字符串,每次从首或尾取一个字符组成字符串,问所有能够组成的字符串中字典序最小的一个。 解题思路:可以将反串拼接在原串后,并在中间加上一个没出现过的字符,比较后缀数组,和反串的后缀数组的rk[]大小即可,每次选择最优解(字典序最小), 直接给串的后面加一个’0’ 然后再加一个反过来的穿在后面 比如ABCD就变为 ABCD0DCBA 因为ABCD f[1]对应的串就是ABCD0DCBA 也就是rank[1] g[4]对应原创 2020-08-16 15:53:56 · 149 阅读 · 0 评论 -
「JSOI2007」字符加密 后缀数组(SA)
字符加密 题目大意:寻找最小的循环移动位置 解题思路: 后缀数组模板题,将字符串 S复制一份,接在S后面变成 SS 就转化成了后缀排序问题,每个字符串的最后一个字符对应的就是s[sa[i]+n-1],然后跑一下模板就odk。 Code: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<queue原创 2020-08-16 14:16:10 · 158 阅读 · 0 评论