提交记录 7948


用户 题目 状态 得分 用时 内存 语言 代码长度
sherlock 1006. 【模板题】后缀排序 Wrong Answer 0 47.439 ms 3512 KB C++ 1.11 KB
提交时间 评测时间
2019-01-25 20:42:27 2020-08-01 01:10:52
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cctype>
using namespace std;
const int MAXN=100010;
#define rg register int
char s[MAXN];
int c[MAXN],x[MAXN],y[MAXN],n,m,sa[MAXN],h[MAXN],rk[MAXN];
inline void suffix_sort()
{
	n=strlen(s+1);
	m='z';
	for(rg i=1;i<=n;i++)c[x[i]=s[i]]++;
	for(rg i=1;i<=m;i++)c[i]+=c[i-1];
	for(rg i=n;i;i--)sa[c[x[i]]--]=i;
	for(rg k=1;k<=n;k<<=1)
	{
		rg num=0;
		for(rg i=n-k+1;i<=n;i++)y[++num]=i;
		for(rg i=1;i<=n;i++)
			if(sa[i]>k)y[++num]=sa[i]-k;
		for(rg i=1;i<=m;i++)c[i]=0;
		for(rg i=1;i<=n;i++)c[x[i]]++;
		for(rg i=1;i<=m;i++)c[i]+=c[i-1];
		for(rg i=n;i;i--)sa[c[x[y[i]]]--]=y[i],y[i]=0;
		swap(x,y);
		x[sa[1]]=num=1;
		for(rg i=2;i<=n;i++)
			x[sa[i]]=(y[sa[i]]==y[sa[i-1]]&&y[sa[i]+k]==y[sa[i-1]+k])?num:++num;
		if(num==n)break ;
		m=num;
	}
	for(rg i=1;i<=n;i++)rk[sa[i]]=i;
	for(rg i=1,k=0;i<=n;i++)
	{
		if(k)k--;
		rg j=sa[rk[i]-1];
		while(j+k<=n&&i+k<=n&&s[j+k]==s[i+k])k++;
		h[rk[i]]=k;
	}
}
int main()
{
	scanf("%s",s+1);
	suffix_sort();
	for(rg i=1;i<=n;i++)
		printf("%d ",sa[i]);
	printf("\n");
	for(rg i=2;i<=n;i++)
		printf("%d ",h[i]);
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #1186.9 us836 KBWrong AnswerScore: -100

Subtask #1 Testcase #2195.82 us836 KBAcceptedScore: 0

Subtask #1 Testcase #3195.82 us836 KBAcceptedScore: 100

Subtask #1 Testcase #4318.96 us840 KBAcceptedScore: 0

Subtask #1 Testcase #5318.7 us840 KBAcceptedScore: 0

Subtask #1 Testcase #6317.01 us840 KBAcceptedScore: 0

Subtask #1 Testcase #730.147 ms3 MB + 136 KBAcceptedScore: 0

Subtask #1 Testcase #847.439 ms3 MB + 356 KBAcceptedScore: 0

Subtask #1 Testcase #932.571 ms3 MB + 224 KBAcceptedScore: 0

Subtask #1 Testcase #1021.299 ms2 MB + 400 KBAcceptedScore: 0

Subtask #1 Testcase #1122.161 ms2 MB + 440 KBAcceptedScore: 0

Subtask #1 Testcase #1238.357 ms3 MB + 420 KBAcceptedScore: 0

Subtask #1 Testcase #1337.241 ms3 MB + 440 KBAcceptedScore: 0

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

Subtask #1 Testcase #1533.795 ms3 MB + 256 KBAcceptedScore: 0

Subtask #1 Testcase #1637.098 ms3 MB + 420 KBAcceptedScore: 0

Subtask #1 Testcase #1736.789 ms3 MB + 420 KBAcceptedScore: 0

Subtask #1 Testcase #1836.999 ms3 MB + 420 KBAcceptedScore: 0


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