提交记录 21621


用户 题目 状态 得分 用时 内存 语言 代码长度
LiZYX 1006. 【模板题】后缀排序 Wrong Answer 0 37.977 ms 3268 KB C++ 1.11 KB
提交时间 评测时间
2024-04-16 20:59:41 2024-04-16 20:59:46
#include<iostream>
#include<string.h>
using namespace std;
const int N=100005;
int n,sa[N],rk[N],h[N];
char a[N];
namespace SA{
	int cnt[N],la[N];
	void getsa(){
		memset(cnt,0,sizeof(cnt));
		for(int i=1;i<=n;++i)rk[i]=a[i],++cnt[a[i]];
		for(int i=1;i<128;++i)cnt[i]+=cnt[i-1];
		for(int i=n;i;--i)sa[cnt[a[i]]--]=i;
		for(int o=1,now,m=128;o<n;o<<=1){
			memset(cnt,0,sizeof(cnt));
			now=0;
			for(int i=1;i<=n;++i)++cnt[rk[i]];
			for(int i=n-o+1;i<=n;++i)la[++now]=i;
			for(int i=1;i<=n;++i)
			if(sa[i]>o)la[++now]=sa[i]-o;
			for(int i=1;i<=m;++i)cnt[i]+=cnt[i-1];
			for(int i=n;i;--i)sa[cnt[rk[la[i]]]--]=la[i];
			m=0;
			swap(la,rk);
			for(int i=1;i<=n;++i)
				if(la[sa[i]]==la[sa[i-1]]&&la[sa[i]+o]==la[sa[i-1]+o])rk[sa[i]]=m;
				else rk[sa[i]]=++m;
		}
	}
	void getht(){
		for(int i=1,o=0,la;i<=n;++i){
			o=max(0,o-1);
			la=sa[rk[i]-1];
			while(a[la+o]==a[i+o])++o;
			h[rk[i]]=o;
		}
	}
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);
	cin>>(a+1);
	n=strlen(a+1);
	SA::getsa();
	SA::getht();
	for(int i=1;i<=n;++i)
		cout<<sa[i]<<" ";
	cout<<'\n';
	for(int i=1;i<=n;++i)
		cout<<h[i]<<" ";
	cout<<'\n';
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #178.55 us472 KBWrong AnswerScore: 0

Subtask #1 Testcase #2233.46 us1 MB + 220 KBWrong AnswerScore: 0

Subtask #1 Testcase #3232.68 us1 MB + 220 KBWrong AnswerScore: 0

Subtask #1 Testcase #4447.76 us1 MB + 220 KBWrong AnswerScore: 0

Subtask #1 Testcase #5446.62 us1 MB + 220 KBWrong AnswerScore: 0

Subtask #1 Testcase #6518 us1 MB + 220 KBWrong AnswerScore: 0

Subtask #1 Testcase #737.977 ms2 MB + 840 KBWrong AnswerScore: 0

Subtask #1 Testcase #837.771 ms3 MB + 4 KBWrong AnswerScore: 0

Subtask #1 Testcase #937.536 ms2 MB + 892 KBWrong AnswerScore: 0

Subtask #1 Testcase #1023.437 ms2 MB + 304 KBWrong AnswerScore: 0

Subtask #1 Testcase #1123.175 ms2 MB + 344 KBWrong AnswerScore: 0

Subtask #1 Testcase #1228.087 ms3 MB + 196 KBWrong AnswerScore: 0

Subtask #1 Testcase #1328.023 ms3 MB + 164 KBWrong AnswerScore: 0

Subtask #1 Testcase #1436.434 ms2 MB + 920 KBWrong AnswerScore: 0

Subtask #1 Testcase #1536.171 ms2 MB + 936 KBWrong AnswerScore: 0

Subtask #1 Testcase #1626.85 ms3 MB + 196 KBWrong AnswerScore: 0

Subtask #1 Testcase #1726.534 ms3 MB + 196 KBWrong AnswerScore: 0

Subtask #1 Testcase #1826.788 ms3 MB + 196 KBWrong AnswerScore: 0


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