摘要: 传送门 其实我就是想练练 st表 本以为学了线段树可以省点事不学 st表 了 但是后缀数组中用 st表 貌似很方便 所以还是学了吧,反正也不难 ——代码 1 #include <cstdio> 2 #define N 100001 3 #define min(x, y) ((x) < (y) ? ( 阅读全文
posted @ 2017-06-11 15:55 zht467 阅读(172) 评论(0) 推荐(0)
摘要: 传送门 求 n 个串的字典序最小的最长公共子串。 和 2 个串的处理方法差不多。 把 n 个串拼接在一起,中间连上一个没有出现过的字符防止匹配过界。 求出 height 数组后二分公共子串长度给后缀数组分组。 然后 check,每一组中是否所有的字符串都包含。 直接遍历 sa 数组,第一个满足的结果 阅读全文
posted @ 2017-06-11 11:15 zht467 阅读(211) 评论(0) 推荐(0)
摘要: 传送门 数据小的话贪心就行。 可以把这个串翻转再接到后面,再求后缀数组,求出 rank 数组就很简单了。 ——代码 1 #include <cstdio> 2 #include <iostream> 3 #define N 60001 4 5 int n, len, m = 256, sum; 6 阅读全文
posted @ 2017-06-11 08:52 zht467 阅读(141) 评论(0) 推荐(0)
摘要: 传送门 求出现超过1次的不重叠子串的个数 根据论文中的方法。 枚举子串的长度 k。 用 k 给 height 数组分组,每一组求解,看看当前组的位置最靠后的后缀和位置最靠前的后缀所差个数是否大于长度,大于的话 ans++。 分组思想需要认真体会一下。 ——代码 1 #include <cstdio> 阅读全文
posted @ 2017-06-11 07:33 zht467 阅读(148) 评论(0) 推荐(0)