题目大意:求最长的不重叠重复字串的最大值
思路:二分最长的长度L,然后按照height>=L分组,可以得出每一个L都会在同一组内,而这组sa[i]max-sa[i]min>=L 则成立
这题输入的细节比较多需要注意(我会说我T了)
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=20005,inf=1e9;
int n,k,p,q=1;
int a[N],v[N],h[N],sa[2][N],rk[2][N];
void calsa(