提交记录 16151


用户 题目 状态 得分 用时 内存 语言 代码长度
ynycoding 1006. 【模板题】后缀排序 Wrong Answer 0 46.352 ms 3888 KB C++11 1.29 KB
提交时间 评测时间
2021-04-15 11:26:47 2021-04-15 11:26:52
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100005
int n, *rk, *ork, rid[N], pool[2][N], sa[N], cnt[N], id[N], h[N], tp;
char s[N];
inline int eq(int x, int y, int len) { return ork[x]==ork[y]&&ork[x+len]==ork[y+len]; }
inline void SA(void)
{
	rk=pool[0], ork=pool[1];
	for(int i=1; i<=n; ++i) ++cnt[rk[i]=s[i]-'a'+1];
	for(int i=1; i<=26; ++i) cnt[i]+=cnt[i-1];
	for(int i=1; i<=n; ++i) sa[cnt[rk[i]]--]=i;
	for(int len=1, lim=0; lim!=n; len<<=1)
	{
		if(!lim) lim=26;
		tp=0;
		for(int i=n-len+1; i<=n; ++i) id[++tp]=i;
		for(int i=1; i<=n; ++i) if(sa[i]>len) id[++tp]=sa[i]-len;
		
		std::fill(cnt+1, cnt+lim+1, 0);
		for(int i=1; i<=n; ++i) ++cnt[rk[i]];
		for(int i=1; i<=lim; ++i) cnt[i]+=cnt[i-1];
		for(int i=1; i<=n; ++i) rid[i]=rk[id[i]];
		for(int i=n; i; --i) sa[cnt[rid[i]]--]=id[i];
		
		std::swap(rk, ork);
		lim=0;
		for(int i=1; i<=n; ++i)
		{
			if(i==1||(!eq(sa[i-1], sa[i], len))) rk[sa[i]]=++lim;
			else rk[sa[i]]=lim;
		}
	}
}
inline void gheight(void)
{
	for(int i=1, k=0; i<=n; ++i)
	{
		if(rk[i]==1) continue;
		if(k) --k;
		int j=sa[rk[i]-1];
		while(s[i+k]==s[j+k]) ++k;
		h[rk[i]]=k;
	}
}
int main()
{
	scanf("%s", s+1);
	n=strlen(s+1);
	SA();
	gheight();
	for(int i=1; i<=n; ++i) printf("%d ", sa[i]);
	puts("");
	for(int i=2; i<=n; ++i) printf("%d ", h[i]);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

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

Subtask #1 Testcase #215.59 us48 KBAcceptedScore: 100

Subtask #1 Testcase #314.15 us48 KBAcceptedScore: 0

Subtask #1 Testcase #416.58 us48 KBAcceptedScore: 0

Subtask #1 Testcase #517.22 us48 KBAcceptedScore: 0

Subtask #1 Testcase #616.91 us48 KBAcceptedScore: 0

Subtask #1 Testcase #729.685 ms3 MB + 508 KBAcceptedScore: 0

Subtask #1 Testcase #846.352 ms3 MB + 728 KBAcceptedScore: 0

Subtask #1 Testcase #932.071 ms3 MB + 596 KBAcceptedScore: 0

Subtask #1 Testcase #1020.752 ms2 MB + 380 KBAcceptedScore: 0

Subtask #1 Testcase #1121.515 ms2 MB + 420 KBAcceptedScore: 0

Subtask #1 Testcase #1238.251 ms3 MB + 792 KBAcceptedScore: 0

Subtask #1 Testcase #1336.963 ms3 MB + 816 KBAcceptedScore: 0

Subtask #1 Testcase #1433.378 ms3 MB + 624 KBAcceptedScore: 0

Subtask #1 Testcase #1533.094 ms3 MB + 628 KBAcceptedScore: 0

Subtask #1 Testcase #1637.322 ms3 MB + 792 KBAcceptedScore: 0

Subtask #1 Testcase #1737.097 ms3 MB + 792 KBAcceptedScore: 0

Subtask #1 Testcase #1837.373 ms3 MB + 792 KBAcceptedScore: 0


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