提交记录 4167


用户 题目 状态 得分 用时 内存 语言 代码长度
FarmerJohn 1006. 【模板题】后缀排序 Wrong Answer 0 198.36 us 148 KB C++ 1.22 KB
提交时间 评测时间
2018-07-18 22:02:52 2020-07-31 22:36:37
#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,M=50500,L=100100,C=13;
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];
void get_sa()
{
	ct=11;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);rnk[sa[1]]=ct=1;
		fo(i,2,n)
		if(!same(sa[i-1],sa[i],len/**2*/)) 
			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("%d\n",&n);
	scanf("%s\n",s+1);
	get_sa();
	fo(i,1,n) printf("%d ",sa[i]);
	printf("\n");
	fo(i,2,n) printf("%d ",he[i]);
	/*
	scanf("%d",&m);
	while(m--)
	{
		scanf("%s\n",t+1);
	}*/
	return 0;
}











CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #133.65 us56 KBWrong AnswerScore: 0

Subtask #1 Testcase #237.66 us56 KBWrong AnswerScore: 0

Subtask #1 Testcase #338.23 us56 KBWrong AnswerScore: 0

Subtask #1 Testcase #435.27 us56 KBWrong AnswerScore: 0

Subtask #1 Testcase #534.55 us56 KBWrong AnswerScore: 0

Subtask #1 Testcase #634.76 us56 KBWrong AnswerScore: 0

Subtask #1 Testcase #7197.14 us148 KBWrong AnswerScore: 0

Subtask #1 Testcase #8197.3 us148 KBWrong AnswerScore: 0

Subtask #1 Testcase #9197.03 us148 KBWrong AnswerScore: 0

Subtask #1 Testcase #10142.79 us120 KBWrong AnswerScore: 0

Subtask #1 Testcase #11142 us120 KBWrong AnswerScore: 0

Subtask #1 Testcase #12197.33 us148 KBWrong AnswerScore: 0

Subtask #1 Testcase #13198.28 us148 KBWrong AnswerScore: 0

Subtask #1 Testcase #14197.52 us148 KBWrong AnswerScore: 0

Subtask #1 Testcase #15198.36 us148 KBWrong AnswerScore: 0

Subtask #1 Testcase #16197.9 us148 KBWrong AnswerScore: 0

Subtask #1 Testcase #17197.58 us148 KBWrong AnswerScore: 0

Subtask #1 Testcase #18197.82 us148 KBWrong AnswerScore: 0


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