提交记录 6644


用户 题目 状态 得分 用时 内存 语言 代码长度
Moon 1006. 【模板题】后缀排序 Wrong Answer 0 53.571 ms 3228 KB C++ 1.57 KB
提交时间 评测时间
2018-10-31 22:03:17 2020-08-01 00:47:57
//#include <bits/stdc++.h>
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <limits>
#include <map>
#include <vector>
#include <queue> 
#define P pair<int ,int >
#define pb push_back
#define LL long long
#define ft first
#define sd second
#define mp(x,y) make_pair(x,y)
#define db double
//#define int LL
using namespace std;
const int N   = 1e5+6;
//const int mod = ;
const int INF =numeric_limits<int >::max();

#define rep(i,x,y) for (int i=x;i<=y;++i)
void read(int &x)
{
	x=0;
	char ch=getchar();
	int f=1;
	while (!isdigit(ch)) (ch=='-'?f=-1:0),ch=getchar();
	while ( isdigit(ch)) x=x*10+ch-'0',ch=getchar();
	x*=f;
}

struct suffix_array
{
	//static const int M=
	int n,m,cnt[N<<1],sa[N<<1],rk[N<<1],h[N<<1],tp[N<<1],p;
	int *x=rk,*y=tp;
	char str[N<<1];
	void Sort()
	{
		rep(i,0,m) cnt[i]=0;
		rep(i,1,n) ++cnt[x[y[i]]] ;
		rep(i,1,m) cnt[i]+=cnt[i-1];
		for (int i=n;i>=1;--i) sa[cnt[x[y[i]]]--]=y[i];
	}
	int cmp(int *f,int x,int y,int w){return f[x]==f[y]&&f[x+w]==f[y+w];}
	void SA()
	{
		rep(i,1,n ) x[i]=str[i],y[i]=i;
		m=256;Sort();
		for (int w=1;w<=n;w<<=1,m=p)
		{
			p=0;
			rep(i,n-w+1,n) y[++p]=i;
			rep(i,1,n) if (sa[i]>w) y[++p]=sa[i]-w;
			Sort();swap(x,y);
			p=0;
			x[sa[1]]=1;
			rep(i,2,n) x[sa[i]] =cmp(y,sa[i],sa[i-1],w) ? p:++p;
		}
		rep(i,1,n) rk[sa[i]]=i;
		for (int j,k=0,i=1;i<=n;h[rk[i++]]=k)
		  for ( k?--k:0 ,j=sa[rk[i]-1];str[j+k]==str[i+k];++k);
		  
	}
	
}A;

signed main()
{
	scanf("%s",A.str+1)	;
	A.n=strlen(A.str+1);
	A.SA();
	rep(i,1,A.n) printf("%d ",A.sa[i]);puts("");
	rep(i,2,A.n) printf("%d ",A.h[i]);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #137.57 us60 KBWrong AnswerScore: 0

Subtask #1 Testcase #241.44 us60 KBAcceptedScore: 100

Subtask #1 Testcase #341.92 us60 KBWrong AnswerScore: -100

Subtask #1 Testcase #444.32 us60 KBWrong AnswerScore: 0

Subtask #1 Testcase #543.82 us60 KBWrong AnswerScore: 0

Subtask #1 Testcase #643.33 us60 KBWrong AnswerScore: 0

Subtask #1 Testcase #753.571 ms2 MB + 832 KBWrong AnswerScore: 0

Subtask #1 Testcase #850.961 ms2 MB + 1020 KBWrong AnswerScore: 0

Subtask #1 Testcase #952.996 ms2 MB + 884 KBWrong AnswerScore: 0

Subtask #1 Testcase #1033.265 ms1 MB + 904 KBWrong AnswerScore: 0

Subtask #1 Testcase #1132.736 ms1 MB + 944 KBWrong AnswerScore: 0

Subtask #1 Testcase #1239.047 ms3 MB + 48 KBWrong AnswerScore: 0

Subtask #1 Testcase #1338.997 ms3 MB + 156 KBWrong AnswerScore: 0

Subtask #1 Testcase #1451.474 ms2 MB + 912 KBWrong AnswerScore: 0

Subtask #1 Testcase #1550.707 ms2 MB + 928 KBWrong AnswerScore: 0

Subtask #1 Testcase #1639.085 ms3 MB + 132 KBWrong AnswerScore: 0

Subtask #1 Testcase #1739.16 ms3 MB + 132 KBWrong AnswerScore: 0

Subtask #1 Testcase #1839.429 ms3 MB + 148 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-13 18:03:18 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠