提交记录 3668


用户 题目 状态 得分 用时 内存 语言 代码长度
EntropyIncreaser 1006. 【模板题】后缀排序 Wrong Answer 0 55.002 ms 5168 KB C++ 1.40 KB
提交时间 评测时间
2018-07-18 07:23:05 2020-07-31 21:22:27
#include <cstdio>
#include <cstring>

#include <algorithm>

using namespace std;

struct Node {
	int a, b, id;
};

const int N = 100010;

int n;
char s[N];
int rk[N], sa[N], ht[N], cnt[N];
Node p[N], q[N];

int main() {
	scanf("%s", s + 1);
	n = strlen(s + 1);
	for (int i = 1; i <= n; ++i)
		cnt[s[i] - 'a'] = 1;
	for (int i = 1; i < 26; ++i)
		cnt[i] += cnt[i - 1];
	for (int i = 1; i <= n; ++i)
		rk[i] = cnt[s[i] - 'a'];
	for (int t = 1; t < n; t <<= 1) {
		memset(cnt, 0, sizeof(cnt));
		for (int i = 1; i <= n; ++i) {
			p[i].id = i;
			p[i].a = rk[i];
			p[i].b = (i + t > n) ? 0 : rk[i + t];
		}
		for (int i = 1; i <= n; ++i)
			++cnt[p[i].b];
		for (int i = 1; i <= n; ++i)
			cnt[i] += cnt[i - 1];
		for (int i = n; i; --i)
			q[cnt[p[i].b]--] = p[i];
		memset(cnt, 0, sizeof(cnt));
		for (int i = 1; i <= n; ++i)
			++cnt[q[i].a];
		for (int i = 1; i <= n; ++i)
			cnt[i] += cnt[i - 1];
		for (int i = n; i; --i)
			p[cnt[q[i].a]--] = q[i];
		int c = 0;
		for (int i = 1; i <= n; ++i) {
			if (p[i].a != p[i - 1].a || p[i].b != p[i - 1].b)
				++c;
			rk[p[i].id] = c;
		}
		if (c == n)
			break;
	}
	for (int i = 1; i <= n; ++i)
		sa[rk[i]] = i;
	int h = 0;
	for (int i = 1; i <= n; ++i) {
		h = max(h - 1, 0);
		while (s[i + h] == s[sa[rk[i] + 1] + h])
			++h;
		ht[rk[i]] = h;
	}
	for (int i = 1; i <= n; ++i)
		printf("%d ", sa[i]);
	putchar('\n');
	for (int i = 1; i < n; ++i)
		printf("%d ", ht[i]);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #19.55 us40 KBWrong AnswerScore: -100

Subtask #1 Testcase #253.53 us428 KBAcceptedScore: 100

Subtask #1 Testcase #350.21 us428 KBAcceptedScore: 0

Subtask #1 Testcase #490.04 us428 KBAcceptedScore: 0

Subtask #1 Testcase #585.84 us428 KBAcceptedScore: 0

Subtask #1 Testcase #687.92 us428 KBAcceptedScore: 0

Subtask #1 Testcase #731.378 ms4 MB + 692 KBAcceptedScore: 0

Subtask #1 Testcase #855.002 ms4 MB + 880 KBAcceptedScore: 0

Subtask #1 Testcase #934.719 ms4 MB + 744 KBAcceptedScore: 0

Subtask #1 Testcase #1022.494 ms3 MB + 248 KBAcceptedScore: 0

Subtask #1 Testcase #1123.771 ms3 MB + 288 KBAcceptedScore: 0

Subtask #1 Testcase #1248.626 ms5 MB + 48 KBAcceptedScore: 0

Subtask #1 Testcase #1346.705 ms5 MB + 16 KBAcceptedScore: 0

Subtask #1 Testcase #1437.555 ms4 MB + 772 KBAcceptedScore: 0

Subtask #1 Testcase #1536.983 ms4 MB + 788 KBAcceptedScore: 0

Subtask #1 Testcase #1647.254 ms5 MB + 48 KBAcceptedScore: 0

Subtask #1 Testcase #1746.772 ms5 MB + 48 KBAcceptedScore: 0

Subtask #1 Testcase #1846.899 ms5 MB + 48 KBAcceptedScore: 0


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