提交记录 8788


用户 题目 状态 得分 用时 内存 语言 代码长度
Smeow 1006. 【模板题】后缀排序 Wrong Answer 0 48.297 ms 3652 KB C++11 1.33 KB
提交时间 评测时间
2019-03-12 10:42:20 2020-08-01 01:24:46
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define per(i, a, b) for(int i = (a); i >= (b); --i)
using namespace std;
const int N = 200005;
namespace SA{
	int sa[N], hs[N], hr[N], rk[N];
	int tmp[N], bin[N];
	void build(char *S, int ls){
		int sz = max(ls, 255);
		rep(i, 1, ls) rk[i] = S[i];
		rep(i, 1, sz) bin[i] = 0;
		rep(i, 1, ls) ++bin[rk[i]];
		rep(i, 2, sz) bin[i] += bin[i - 1];
		rep(i, 1, ls) sa[--bin[rk[i]] + 1] = i;
		for(int j = 1; j <= ls; j <<= 1){
			int tot = 0;
			rep(i, ls - j + 1, ls) tmp[++tot] = i;
			rep(i, 1, ls) if(sa[i] - j > 0) tmp[++tot] = sa[i] - j;
			rep(i, 1, sz) bin[i] = 0;
			rep(i, 1, ls) ++bin[rk[i]];
			rep(i, 2, sz) bin[i] += bin[i - 1];
			per(i, ls, 1) sa[--bin[rk[tmp[i]]] + 1] = tmp[i];
			tot = 1; tmp[sa[1]] = 1;
			rep(i, 2, ls)
				tmp[sa[i]] = rk[sa[i]] == rk[sa[i - 1]] && rk[sa[i] + j] == rk[sa[i - 1] + j] ? tot : ++tot;
			rep(i, 1, ls) rk[i] = tmp[i];
			if(ls == tot) break;
		}
		rep(i, 1, ls){
			hs[i] = max(hs[i - 1] - 1, 0);
			while(S[i + hs[i]] == S[sa[rk[i] - 1] + hs[i]]) ++hs[i];
			hr[rk[i]] = hs[i];
		}
	}
}
char S[N];
int main(){
	scanf("%s", S + 1);
	int ls = strlen(S + 1);
	SA::build(S, ls);
	rep(i, 1, ls) printf("%d ", SA::sa[i]);
	puts("");
	rep(i, 2, ls) printf("%d ", SA::hr[i]);
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #137.5 us64 KBWrong AnswerScore: -100

Subtask #1 Testcase #238.7 us64 KBAcceptedScore: 100

Subtask #1 Testcase #337.01 us64 KBAcceptedScore: 0

Subtask #1 Testcase #442.53 us64 KBAcceptedScore: 0

Subtask #1 Testcase #542.69 us64 KBAcceptedScore: 0

Subtask #1 Testcase #643.21 us64 KBAcceptedScore: 0

Subtask #1 Testcase #730.44 ms3 MB + 200 KBAcceptedScore: 0

Subtask #1 Testcase #848.297 ms3 MB + 388 KBAcceptedScore: 0

Subtask #1 Testcase #933.116 ms3 MB + 252 KBAcceptedScore: 0

Subtask #1 Testcase #1021.617 ms2 MB + 140 KBAcceptedScore: 0

Subtask #1 Testcase #1122.399 ms2 MB + 180 KBAcceptedScore: 0

Subtask #1 Testcase #1241.533 ms3 MB + 580 KBAcceptedScore: 0

Subtask #1 Testcase #1339.808 ms3 MB + 548 KBAcceptedScore: 0

Subtask #1 Testcase #1434.68 ms3 MB + 280 KBAcceptedScore: 0

Subtask #1 Testcase #1534.529 ms3 MB + 296 KBAcceptedScore: 0

Subtask #1 Testcase #1640.242 ms3 MB + 580 KBAcceptedScore: 0

Subtask #1 Testcase #1740.096 ms3 MB + 580 KBAcceptedScore: 0

Subtask #1 Testcase #1840.319 ms3 MB + 580 KBAcceptedScore: 0


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