传送门 题意 给一个字符串,求它有多少个不同的子串。 思路 后缀数组当然是能做的,每个sa[i] - height[i]的和就是答案了。 后缀自动机也可以做,后缀自动机上从起点到任意状态就是一个子串,每条路径表示的子串都不同,所以只要求出后缀自动机上从起点到其它点的路径条数就是不同子串的个数。 #include <bits/stdc++.h> using namespace std; const int maxn = 2e5 + 7, M = 26; typedef long long ll; char s[maxn]; int head[maxn], to[maxn], nex[...