模版 代码 struct SA { int n, sa[maxn], rk[maxn<<1], oldrk[maxn<<1], cnt[maxn], id[maxn], key1[maxn], height[maxn]; // 注意 rk[maxn<<1] oldrk[maxn<<1] char s[maxn]; int m = 127; bool cmp(int i, int j, int w) { return oldrk[i] == oldrk[j] && oldrk[i+w] == oldrk[j+w]; } void init(string& ss) { n = ss.size(); // LOG(n); for (int i = 1; i <= n; i++) s[i] = ss[i-1]; for (int i = 1;