提交记录 4491


用户 题目 状态 得分 用时 内存 语言 代码长度
AKEE 1006. 【模板题】后缀排序 Wrong Answer 0 50.541 ms 4724 KB C++ 1.46 KB
提交时间 评测时间
2018-07-23 20:03:39 2020-07-31 23:03:18
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>

using namespace std;

const int MAXN=100005;

int n;
char s[MAXN];

struct Suffix
{
	int x,y,id;
	Suffix(int x=0,int y=0,int id=0):x(x),y(y),id(id){}
	inline bool operator ==(const Suffix &b)const {return x==b.x && y==b.y;}
}a[MAXN],b[MAXN];
int wcnt[29],sa[MAXN],rk[MAXN],height[MAXN];

void buildsa()
{
	int tot=0,k=1;
	for(int i=1;i<=n;i++)wcnt[s[i]-'a']++;
	for(int i=1;i<26;i++)wcnt[i]+=wcnt[i-1];
	for(int i=n;i>0;i--)sa[wcnt[s[i]-'a']--]=i;
	for(int i=1;i<=n;i++)
		if(s[sa[i]]==s[sa[i-1]])rk[sa[i]]=tot;
		else rk[sa[i]]=++tot;
	while(k<=n)
	{
		for(int i=1;i<=n;i++)a[i]=Suffix(rk[i],i+k<=n?rk[i+k]:0,i);
		memset(wcnt,0,sizeof(wcnt));
		for(int i=1;i<=n;i++)wcnt[a[i].y]++;
		for(int i=1;i<26;i++)wcnt[i]+=wcnt[i-1];
		for(int i=n;i>0;i--)b[wcnt[a[i].y]--]=a[i];
		memset(wcnt,0,sizeof(wcnt));
		for(int i=1;i<=n;i++)wcnt[b[i].x]++;
		for(int i=1;i<26;i++)wcnt[i]+=wcnt[i-1];
		for(int i=n;i>0;i--)a[wcnt[b[i].x]--]=b[i];
		tot=0;
		for(int i=1;i<=n;i++)
			if(a[i]==a[i-1])rk[a[i].id]=tot;
			else rk[a[i].id]=++tot;
		k<<=1;
	}
	for(int i=1;i<=n;i++)sa[rk[i]]=i;
	k=0;
	for(int i=1;i<=n;i++)
	{
		if(k)k--;
		for(int t=sa[rk[i]-1];i+k<=n && t+k<=n && s[i+k]==s[t+k];k++);
		height[rk[i]]=k;
	}
}

int main()
{
    scanf("%s",s+1);
    n=strlen(s+1);
    buildsa();
    for(int i=1;i<=n;i++)
    	printf("%d ",sa[i]);
    putchar('\n');
    for(int i=2;i<=n;i++)
    	printf("%d ",height[i]);
    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #1363.36 us2 MB + 348 KBWrong AnswerScore: 0

Subtask #1 Testcase #2367.57 us2 MB + 348 KBAcceptedScore: 100

Subtask #1 Testcase #3366.88 us2 MB + 348 KBAcceptedScore: 0

Subtask #1 Testcase #4369.33 us2 MB + 352 KBAcceptedScore: 0

Subtask #1 Testcase #5367.99 us2 MB + 348 KBAcceptedScore: 0

Subtask #1 Testcase #6366.99 us2 MB + 352 KBAcceptedScore: 0

Subtask #1 Testcase #750.541 ms4 MB + 320 KBWrong AnswerScore: -100

Subtask #1 Testcase #848.524 ms4 MB + 344 KBWrong AnswerScore: 0

Subtask #1 Testcase #949.367 ms4 MB + 320 KBWrong AnswerScore: 0

Subtask #1 Testcase #1031.692 ms3 MB + 660 KBWrong AnswerScore: 0

Subtask #1 Testcase #1131.256 ms3 MB + 668 KBWrong AnswerScore: 0

Subtask #1 Testcase #1244.02 ms4 MB + 528 KBWrong AnswerScore: 0

Subtask #1 Testcase #1316.984 ms3 MB + 728 KBRuntime ErrorScore: 0

Subtask #1 Testcase #1447.451 ms4 MB + 344 KBWrong AnswerScore: 0

Subtask #1 Testcase #1548.258 ms4 MB + 628 KBWrong AnswerScore: 0

Subtask #1 Testcase #1643.925 ms4 MB + 384 KBWrong AnswerScore: 0

Subtask #1 Testcase #1744.983 ms4 MB + 628 KBWrong AnswerScore: 0

Subtask #1 Testcase #1844.718 ms4 MB + 624 KBWrong AnswerScore: 0


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