随笔分类 - 后缀数组
摘要:Find String in a Grid 把矩阵按行接起来求一个SA, 把矩阵按列接起来求一个SA, 然后就枚举询问串的转折点, 转换成求矩阵内二维数点的个数。
阅读全文
摘要:Yet Another LCP Problem 把sa求出来之后, 对于每个询问用单调栈处理。
阅读全文
摘要:Mike and Friends 求出后缀数组, 对于每个询问二分出左右端点, 离线之后用树状数组求就好了。 或者不建st表, 用并查集求出左右端点, 这样空间和常数都更优。
阅读全文
摘要:并查集合并的时候更新信息。注意a[ i ] 有负的。
阅读全文
摘要:按lcp合并计算答案。
阅读全文
摘要:因为强制在线所以只能转成序列上的问题然后树套树了。。。
阅读全文
摘要:Liar 刚开始感觉只要开个dp[ i ][ j ][ 0 / 1 ]表示处理了s的前 i 个用了 k 段, i 是否是最后一段的最后一个字符 的 t串最长匹配长度, 然后wa24, 就gg了。感觉这个转移感觉很对, 但是实际上不对。。。 比如s = ababcde, t = abcde, x =
阅读全文
摘要:E - Forensic Examination 我也不知道为什么这个复杂度能过, 而且跑得还挺快, 数据比较水? 在sa上二分出上下界, 然后莫队 + 线段树维护区间众数。
阅读全文
摘要:Paper task 如果不要求本质不同直接st表二分找出最右端, 然后计数就好了。 要求本质不同, 先求个sa, 然后用lcp求本质不同就好啦。
阅读全文
摘要:#include #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair #define PLI pair #define PII pair #define SZ(x) ((int)x.size()) #define ull unsigned long long ...
阅读全文
摘要:K - Relevant Phrases of Annihilation 题目大意:给你 n 个串,问你最长的在每个字符串中出现两次且不重叠的子串的长度。 思路:二分长度,然后将height分块,看是否存在一个块里面 每个串都符合条件。
阅读全文
摘要:D - New Distinct Substrings 题目大意:求一个字符串中不同子串的个数。 裸的后缀数组
阅读全文
摘要:#include #define LL long long #define fi first #define se second #define mk make_pair #define pii pair #define y1 skldjfskldjg #define y2 skldfjsklejg using namespace std; const int N = 1e5 + 7; co...
阅读全文
摘要:B - Symmetric Matrix 思路:将矩阵转换成图的形式,然后推公式。 #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define
阅读全文
摘要:题目大意:有n个点, 每个点有一个数字0 - 9, 第 i 个点只能到 第(i * i + 1)个点,问你在哪个点出发走n次构成的数字串最大。 思路:利用求后缀数组的倍增比较思想, 许多细节需要注意。
阅读全文
摘要:1 #include 2 #include 3 #define LL long long 4 #define fi first 5 #define se second 6 #define mk make_pair 7 #define pii pair 8 9 using namespace std; 10 11 const int N=2e5+7; 12 const int...
阅读全文