两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
2020-2021:teams:legal_string:jxm2001:字符串_3 [2020/08/31 13:03] jxm2001 |
2020-2021:teams:legal_string:jxm2001:字符串_3 [2020/09/02 10:52] (当前版本) jxm2001 |
||
---|---|---|---|
行 1: | 行 1: | ||
====== 字符串 3 ====== | ====== 字符串 3 ====== | ||
- | ===== 后缀数组 ===== | + | ===== 后缀数组(SA) ===== |
==== 算法简介 ==== | ==== 算法简介 ==== | ||
行 41: | 行 41: | ||
<code cpp> | <code cpp> | ||
namespace SA{ | namespace SA{ | ||
- | int sa[MAXN],rk[MAXN],height[MAXN],x[MAXN],y[MAXN],c[MAXN]; | + | int sa[MAXN],rk[MAXN],height[MAXN],X[MAXN],Y[MAXN],c[MAXN]; |
int d[MAXN][MAXM],lg2[MAXN]; | int d[MAXN][MAXM],lg2[MAXN]; | ||
void get_sa(char *s,int n,int m){//s下标从1开始 | void get_sa(char *s,int n,int m){//s下标从1开始 | ||
+ | int *x=X,*y=Y; | ||
_rep(i,0,m)c[i]=0; | _rep(i,0,m)c[i]=0; | ||
_rep(i,1,n)c[x[i]=s[i]]++; | _rep(i,1,n)c[x[i]=s[i]]++; |