后綴數(shù)組不會,也不知道他們怎么暴力做掉的。
于是拜讀了一篇論文,學習了最小表示法。
讓后AC了。

...

/**//*
USER:zyn19961
TASK:hidden
LANG:C++
*/
#include<string>
#include<cstdio>
#include<cstring>
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
//
#define MM(a,i) memset(a,i,sizeof(a))
#define FOR(i,l,r) for (int i=(l);i<=(r);i++)
#define NFOR(i,l,r) for (i=(l);i<=(r);i++)
#define DFOR(i,r,l) for (int i=(r);i>=(l);i--)
//
#define MP make_pair
#define FT first
#define SD second
//
typedef long long Int64;
const int INF=~0U>>2;
const int maxn=200007;
//
ifstream fin("hidden.in");
ofstream fout("hidden.out");
//
string S(maxn,0),s(maxn,0);

int main()
{
int n;fin>>n;
S.clear();
FOR(i,1,(n-1)/72+1)fin>>s,S+=s;S+=S;
int i=0,j=1,k;

for(;j<n;)
{
NFOR(k,0,n-1)if(S[i+k]!=S[j+k])break;
if(k==n)break;
if(S[i+k]>S[j+k])i+=k+1;
else j+=k+1;
if(j==i)j++;
}
fout<<i<<"\n";
fin.close();
fout.close();
return 0;
}
