![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后缀数组
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[SA] BZOJ 2251 [2010Beijing Wc]外星联络
见后缀数组后暴力就好了考前练版子,竟然WA了几发#include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,std原创 2016-04-27 19:45:02 · 441 阅读 · 0 评论 -
[后缀数组 set] BZOJ 4516 [Sdoi2016]生成魔咒
将串反过来 后缀数组 然后用set维护一个序列 插入时修改答案即可#include#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p原创 2016-04-22 10:29:35 · 493 阅读 · 0 评论 -
[AC自动机 fail树 || 后缀数组] BZOJ 3172 [Tjoi2013]单词
只有我一个人觉得题意看不懂么fail树的做法首先我们将给出的n个串构建AC自动机朴素的做法是对于每个串将这个串每个节点沿着fail指针扫一遍,将路径上的所有点的cnt++但是这样做会TLE我们不妨反向思考 fail指针反向后是一棵树 沿着fail指针扫一遍就是沿着树边向根扫一遍只在插入时将每个串的每个节点cnt++ 那么每个串终点所在fail原创 2016-07-21 08:32:08 · 359 阅读 · 0 评论 -
[后缀数组 枚举 字符串分段] BZOJ 4650 [Noi2016]优秀的拆分
先求出所有的双倍字串 然后再乱来我们枚举一半的长度 然后把整个字符串按照长度l分段 起点分别为 s[1] s[l+1] s[2l+1] ... 分段后记作 S1 S2 S3 .....那么双倍的串一定会包含其中两个 我们求 Si Si-1的LCS Si Si+1的LCP如果LCS+LCP>=l 那么存在 双倍串 记录一下 这里我用了差分#include原创 2016-11-10 18:03:50 · 431 阅读 · 0 评论 -
[后缀数组 贪心] BZOJ 4278 [ONTAK2015]Tasowanie
两个指针 显然小的那个先放 如果一样 比后一个 再一样 再后 然后就转化成比较后缀的字典序了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p原创 2017-04-28 20:25:24 · 467 阅读 · 0 评论 -
[后缀数组 主席树] BZOJ 4556 [Tjoi2016&Heoi2016]字符串
二分答案 t,在后缀数组上找到与 [c,d] LCP 大于等于 t 的区间 [l,r]。 相当于询问 [l,r] 中是否存在 [a,b − t + 1] 里的数字 主席树#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100原创 2017-04-28 20:27:19 · 482 阅读 · 0 评论 -
[后缀数组] BZOJ 2119 股市的预测
类似 [Noi2016]优秀的拆分枚举 A 的长度 l,把字符串中所有下标为 l 倍数的位置标记出来。左端点 A 的部分一定恰好包含一个标记点。 枚举每一个标记点 i,它的对应点是 i+l+m,后缀数组求出往前 最多对应相同的位数 L 和往后最多位数 R。 贡献为 max(0,min(L-1,l-1)+min(R-1,l-1)+1-l+1);#include<cstdio> #includ原创 2017-04-28 20:29:25 · 462 阅读 · 0 评论 -
[后缀数组 后缀树] Codechef January Challenge 2018 #KILLKTH Killjee and k-th letter
建出后缀树,记录每个子串的出现次数,然后二分下答案在哪个子串中就好了退役选手不会写后缀自动机#include#include#include#include#define pb push_backusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=b原创 2018-01-19 14:07:23 · 694 阅读 · 0 评论