后缀数组+单调栈 代码 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; ; const int MAXN = N; struct SuffixArray{ int wa[MAXN]; int wb[MAXN]; int wv[MAXN]; int ws[MAXN]; int sa[MAXN]; int rank[MAXN]; int height[MAXN]; int…
https://www.lydsy.com/JudgeOnline/problem.php?id=3238 跟 bzoj3879 差不多 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define N 500001 int n,m,mm; char s[N]; int a[N]; int v[N]; ,k; ][N…
思路 SAM 后缀自动机parent树的LCA就是两个子串的最长公共后缀 现在要求LCP 所以把字符串反转一下 然后每个点的贡献就是endpos的大小,dfs一遍求出贡献就可以了 代码 #include <cstdio> #include <algorithm> #include <cstring> #define int long long using namespace std; const int MAXN = 500500*2; int Nodecnt,tran…