提交记录 4177


用户 题目 状态 得分 用时 内存 语言 代码长度
FarmerJohn 1006. 【模板题】后缀排序 Wrong Answer 0 48.118 ms 3576 KB C++ 1.21 KB
提交时间 评测时间
2018-07-18 22:20:47 2020-07-31 22:38:27
#include <cstdio>
#include <cstring>
//#include <iostream>
#define oo 2139062143
#define fo(i,x,y) for (int i=(x);i<=(y);++i)
#define fd(i,x,y) for (int i=(x);i>=(y);--i)
using namespace std;
const int N=100100,L=100100,C=27;
char s[L],t[L];
int n,m,l,ct;
int sa[N],rnk[N],w[N],se[N];
void gt_sa()
{
	fo(i,0,ct) w[i]=0;
	fo(i,1,n) ++w[rnk[i]];
	fo(i,1,ct) w[i]+=w[i-1];
	fd(i,n,1) sa[w[rnk[se[i]]]--]=se[i];
}
int same(int x,int y,int len)
{
	return(se[x]==se[y]&&se[x+len]==se[y+len]);
}
int h[N],he[N];
int max(int x,int y)
{
	return(x>y)?x:y;
}
void get_sa()
{
	ct=C;rnk[n+1]=-1;
	fo(i,1,n) se[i]=i,rnk[i]=s[i]-'a'+1;
	gt_sa();
	for(int len=1;len<=n;len<<=1)
	{
		int tct=0;
		fo(i,n-len+1,n) se[++tct]=i;
		fo(i,1,n) if(sa[i]>len) se[++tct]=sa[i]-len;
		gt_sa();
//		swap(rnk,se);
		fo(i,1,n) se[i]=rnk[i];
		rnk[sa[1]]=ct=1;
		fo(i,2,n)
		if(!same(sa[i-1],sa[i],len)) 
			rnk[sa[i]]=++ct;
		else rnk[sa[i]]=ct;
	}
	fo(i,1,n)
	{
		h[i]=max(h[i-1]-1,0);	
		while(s[i+h[i]]==s[sa[rnk[i]-1]+h[i]]) ++h[i];
	}
	fo(i,1,n) he[i]=h[sa[i]];
}
int main()
{
//	freopen("D:/LiuYuanHao/a.in","r",stdin);
	scanf("%s\n",s+1);n=strlen(s+1);
	get_sa();
	fo(i,1,n) printf("%d ",sa[i]);
	printf("\n");
	fo(i,2,n) printf("%d ",he[i]);
	return 0;
}



CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #111.29 us48 KBWrong AnswerScore: -100

Subtask #1 Testcase #215.22 us48 KBAcceptedScore: 100

Subtask #1 Testcase #314.64 us48 KBAcceptedScore: 0

Subtask #1 Testcase #416.91 us48 KBAcceptedScore: 0

Subtask #1 Testcase #516.98 us48 KBAcceptedScore: 0

Subtask #1 Testcase #616.89 us48 KBAcceptedScore: 0

Subtask #1 Testcase #747.617 ms3 MB + 156 KBAcceptedScore: 0

Subtask #1 Testcase #848.118 ms3 MB + 344 KBAcceptedScore: 0

Subtask #1 Testcase #947.361 ms3 MB + 208 KBAcceptedScore: 0

Subtask #1 Testcase #1030.049 ms2 MB + 124 KBAcceptedScore: 0

Subtask #1 Testcase #1129.803 ms2 MB + 164 KBAcceptedScore: 0

Subtask #1 Testcase #1237.98 ms3 MB + 404 KBAcceptedScore: 0

Subtask #1 Testcase #1337.906 ms3 MB + 504 KBAcceptedScore: 0

Subtask #1 Testcase #1446.608 ms3 MB + 236 KBAcceptedScore: 0

Subtask #1 Testcase #1546.277 ms3 MB + 252 KBAcceptedScore: 0

Subtask #1 Testcase #1636.691 ms3 MB + 404 KBAcceptedScore: 0

Subtask #1 Testcase #1736.277 ms3 MB + 404 KBAcceptedScore: 0

Subtask #1 Testcase #1837.118 ms3 MB + 404 KBAcceptedScore: 0


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