Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in", "r", stdin) #define maxn 3000000 using namespace std; char str[maxn]; namespace SA { int n, m; int rk[maxn], sa[maxn], tp[maxn], tax[maxn], height[maxn]; void qsort(
最近感觉自己越来越蒟蒻了--后缀数组不会,费用流不会-- 看着别人切一道又一道的题,我真是很无奈啊-- 然后,我花了好长时间,终于弄懂了后缀数组. 后缀数组是什么? 后缀SASASA数组 给你一个字符串,让你将每个后缀排序,就是一个后缀数组. 比如,字符串为ababa,就会搞出一个这样的东西: a aba ababa ba baba SA={4,2,0,3,1}; 其中,每个后缀用开始的位置来表示. rankrankrank数组 相当于逆着的SASASA,rank[sa[i]]=irank[sa