队列变换 bzoj-1692 Usaco-2007 Dec 题目大意:给定一个长度为$n$的字符串。每次从头或尾取出一个字符加到另一个字符串里。要求变换后生成的字符串字典序最小,求字典序最小的字符串。 注释:$1\le n\le 3\cdot 10^4$。 想法: 考虑暴力怎么做: 每次把当前字符串 ...
分类:
编程语言 时间:
2018-12-12 15:40:42
阅读次数:
240
Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 35607 Accepted: 14275 Case Time Limit: 1000MS Description The little cat ...
分类:
编程语言 时间:
2018-12-10 11:42:24
阅读次数:
187
bzoj 题解: 后缀数组+RMQ 有一个性质是,若出现ABA形式,且|A|比较大|B|<=m,那么真正的B块端点可以来回滑动。 因此我们可以正反做两遍后缀数组,利用RMQ求出区间最小值即前缀长。 然后先枚举|A|,再枚举左边A的端点,这样ABA位置大体确定。 然后在两个左端点处分别向两端延伸,更新 ...
分类:
其他好文 时间:
2018-12-09 20:02:36
阅读次数:
207
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2865 做出 ht[ ] 之后,sa[ ] 上每个位置和它前面与后面取 LCP ,其中较大的长度设为 d ,表示从 sa[ i ] 位置开始的子串的右端点要在 sa[ i ]+d-1 位置之后才 ...
分类:
编程语言 时间:
2018-12-08 17:03:25
阅读次数:
238
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2865 唯一出现的子串就是每个后缀除去和别的后缀最长的 LCP 之外的前缀; 所以用这个更新一段区间的答案,可以用线段树维护; 在 sa[i] ~ sa[i]+LCP+1 位置的答案由 LCP+ ...
分类:
编程语言 时间:
2018-12-08 16:59:25
阅读次数:
213
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3796 先把三个串拼在一起,KMP 求 s1 , s2 中每个位置和 s3 的匹配情况; 注意拼三个串时加入的两个新字符不要一样,否则会影响; 然后预处理出每个位置后面的第一个 s3 的开头 — ...
分类:
编程语言 时间:
2018-12-08 11:19:28
阅读次数:
198
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3796 长度一般都是 1e5 ,看这个是 5e4 ,一看就是把两个串接起来做。 自己本来想的是把 s3 分别接到 s1 和 s2 后面,做后缀数组求出 s1 和 s2 的每个位置有没有作为开头出 ...
分类:
编程语言 时间:
2018-12-08 00:19:43
阅读次数:
233
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3230 作出后缀数组,从 LCP 看每个位置对于本质不同子串的贡献,而且他们已经按前面部分排好序了,所以直接在 sa[ ] 上二分就能找到询问的子串。 找最长公共前缀就用 ht[ ] 和子串的长 ...
分类:
编程语言 时间:
2018-12-07 18:26:03
阅读次数:
170
"传送门" 解题思路 后缀数组求本质不同串的裸题。$ans=\dfrac{n(n+1)}{2} \sum height[i]$。 代码 cpp include include include include include using namespace std; const int MAXN = ...
分类:
编程语言 时间:
2018-12-06 14:37:58
阅读次数:
232