后缀数组
magic_sheep
这个作者很懒,什么都没留下…
展开
-
后缀数组模板
最近复习了一下后缀数组,在这里放一下模板。 在这里用的是书上的模板,貌似没有网上那么有没。 部分模板void build_sa(int m){ int *x=t1,*y=t2; for(int i=0;i<m;i++) c[i]=0; for(int i=0;i<n;i++) c[x[i]=s[i]]++; for(int i=0;i<m;i++) c[i]+原创 2017-02-09 20:51:34 · 273 阅读 · 0 评论 -
POJ 1743 Musical Theme(后缀数组)
这道题主要涉及后缀数组求最长不重叠公共字串,主要方法是二分答案k,把height数组分组组内后缀之间的height值要大于k,小于k的组就不考虑了。组内起始位置的差值也要大于k,这样才能保证不重叠。#include<cstdio>#include<iostream>#include<cstring>#include<vector>using namespace std;const int原创 2017-02-11 20:13:48 · 209 阅读 · 0 评论 -
BZOJ 4199 [Noi2015]品酒大会
后缀数组好题,把height从大到小排序,利用并查集维护每个height值大于0的后缀。由于权值可能为负,所以维护最大值的同时还要维护最小值,每次合并左右相邻rankps:有抄代码的嫌疑…..#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define ll long longusing name原创 2017-03-03 20:50:49 · 266 阅读 · 0 评论 -
BZOJ 4556 [HEOI 2016] str
学习了一下经典的在后缀数组上维护主席树的思想。 求出sa和height数组,以sa数组对原串建主席树,对每个询问二分答案出长度ans,然后只要在(c,c+len)的区间中查找是否有属于(a,b-len+1)的下表。出了几个小问题查了好久。开始用的cmath 里的log函数求RMQ 直接爆炸,还是自己手打吧。小样例全过了但交上去WA了,发现自己RMQ的st数组…st[maxn][20]… maxn原创 2017-02-10 17:09:41 · 304 阅读 · 0 评论 -
HDU 6704 K-th occurrence 后缀数组+主席树维护sa数组
You are given a string S consisting of only lowercase English letters and some queries.For each query (l,r,k), please output the starting position of the k-th occurence of the substring SlSl+1…Sr in ...原创 2019-08-28 17:53:38 · 212 阅读 · 0 评论