提交记录 21861


用户 题目 状态 得分 用时 内存 语言 代码长度
Joey_c 1006. 【模板题】后缀排序 Wrong Answer 0 67.829 ms 10268 KB C++ 1.27 KB
提交时间 评测时间
2024-06-29 20:54:24 2024-06-29 20:54:30
#include<bits/stdc++.h>
using namespace std;
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define reo(i,j,k) for(int i=j;i>=k;i--)
#define mem memset
#define mpy memcpy
typedef long long ll;
constexpr int N = 1e6 + 10;
int n, m = 26, p, sa[N], rk[N], se[N], cnt[N], ht[N];
char s[N];
inline void rsort() {
    rep(i, 1, m) cnt[i] = 0;
    rep(i, 1, n) cnt[rk[i]]++;
    rep(i, 1, m) cnt[i] += cnt[i - 1];
    reo(i, n, 1) sa[cnt[rk[se[i]]]--] = se[i];
}
inline void SA() {
	if (n == 1) return (void)(rk[1] = 1, sa[1] = 1);
    rep(i, 1, n) rk[i] = s[i] - 'a' + 1, se[i] = i; rsort();
    for (int w = 1; w < n; w <<= 1, m = p) {
        p = 0;
        rep(i, n - w + 1, n) se[++p] = i;
        rep(i, 1, n) if (sa[i] > w) se[++p] = sa[i] - w;
        rsort(), swap(rk, se);
        p = 0;
        rep(i, 1, n) 
            if (se[sa[i]] == se[sa[i - 1]] && se[sa[i] + w] == se[sa[i - 1] + w]) rk[sa[i]] = p;
            else rk[sa[i]] = ++p;
        if (p == n) return;
    }
}
int main() {
    scanf("%s", s + 1), n = strlen(s + 1), SA();
	fprintf(stderr, "%s\n", s + 1);
    rep(i, 1, n) printf("%d%c", sa[i], " \n"[i == n]);
	for (int i = 1, k = 0; i <= n; i++) {
		if (k) k--;
		while (s[i + k] == s[sa[rk[i] - 1] + k]) k++;
		ht[rk[i]] = k;
	}
	rep(i, 2, n) printf("%d%c", ht[i], " \n"[i == n]);
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #141.11 us56 KBWrong AnswerScore: 0

Subtask #1 Testcase #21.57 ms7 MB + 700 KBAcceptedScore: 0

Subtask #1 Testcase #31.569 ms7 MB + 700 KBAcceptedScore: 0

Subtask #1 Testcase #42.912 ms7 MB + 700 KBAcceptedScore: 0

Subtask #1 Testcase #52.91 ms7 MB + 700 KBAcceptedScore: 0

Subtask #1 Testcase #62.909 ms7 MB + 700 KBAcceptedScore: 0

Subtask #1 Testcase #742.811 ms9 MB + 744 KBAcceptedScore: 0

Subtask #1 Testcase #867.829 ms9 MB + 968 KBAcceptedScore: 0

Subtask #1 Testcase #946.647 ms9 MB + 836 KBAcceptedScore: 0

Subtask #1 Testcase #1031.813 ms9 MB + 68 KBAcceptedScore: 0

Subtask #1 Testcase #1133.282 ms9 MB + 112 KBAcceptedScore: 0

Subtask #1 Testcase #1260.361 ms10 MB + 8 KBAcceptedScore: 0

Subtask #1 Testcase #1357.56 ms10 MB + 28 KBAcceptedScore: 0

Subtask #1 Testcase #1449.28 ms9 MB + 864 KBAcceptedScore: 0

Subtask #1 Testcase #1548.903 ms9 MB + 864 KBAcceptedScore: 0

Subtask #1 Testcase #1659.062 ms10 MB + 8 KBAcceptedScore: 0

Subtask #1 Testcase #1758.756 ms10 MB + 8 KBAcceptedScore: 0

Subtask #1 Testcase #1858.982 ms10 MB + 8 KBAcceptedScore: 0


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