后缀数组:SA[i]表示字典序第i的后缀的开头字母的位置,比如abca,后缀有五个,abca,bca,ca,a,空后缀
求后缀数组的方法是……类似分治法,类似二分法?
首先求出每个后缀首字母的顺序,然后依据这个顺序求出每个后缀首两个字母开头的后缀的顺序,最后就能求出每个后缀的顺序
具体实现上,参考挑战程序设计竞赛里给的(有更好的基数排序算法)(代码没编译过……下同)
int n,k;
int rank[maxn_n + 1];
int tmp[manx_n + 1];
for(int i = 0; i <= n; i++){
sa[i] = i;
rank[i] = i < n? s[i