提交记录 21859


用户 题目 状态 得分 用时 内存 语言 代码长度
Joey_c 1006. 【模板题】后缀排序 Wrong Answer 0 68.153 ms 10168 KB C++ 1.18 KB
提交时间 评测时间
2024-06-29 19:31:31 2024-06-29 19:31:38
#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() {
    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();
    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 #144.39 us60 KBWrong AnswerScore: 0

Subtask #1 Testcase #21.571 ms7 MB + 696 KBAcceptedScore: 0

Subtask #1 Testcase #31.566 ms7 MB + 696 KBAcceptedScore: 0

Subtask #1 Testcase #42.909 ms7 MB + 696 KBAcceptedScore: 0

Subtask #1 Testcase #52.914 ms7 MB + 696 KBAcceptedScore: 0

Subtask #1 Testcase #62.911 ms7 MB + 696 KBAcceptedScore: 0

Subtask #1 Testcase #742.852 ms9 MB + 644 KBAcceptedScore: 0

Subtask #1 Testcase #868.153 ms9 MB + 868 KBAcceptedScore: 0

Subtask #1 Testcase #946.662 ms9 MB + 736 KBAcceptedScore: 0

Subtask #1 Testcase #1031.673 ms9 MBAcceptedScore: 0

Subtask #1 Testcase #1133.183 ms9 MB + 44 KBAcceptedScore: 0

Subtask #1 Testcase #1260.298 ms9 MB + 932 KBAcceptedScore: 0

Subtask #1 Testcase #1357.631 ms9 MB + 952 KBAcceptedScore: 0

Subtask #1 Testcase #1449.086 ms9 MB + 764 KBAcceptedScore: 0

Subtask #1 Testcase #1549.092 ms9 MB + 764 KBAcceptedScore: 0

Subtask #1 Testcase #1659.005 ms9 MB + 932 KBAcceptedScore: 0

Subtask #1 Testcase #1758.451 ms9 MB + 932 KBAcceptedScore: 0

Subtask #1 Testcase #1858.656 ms9 MB + 932 KBAcceptedScore: 0


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