提交记录 8786


用户 题目 状态 得分 用时 内存 语言 代码长度
Smeow 1006. 【模板题】后缀排序 Wrong Answer 0 48.335 ms 3652 KB C++11 1.33 KB
提交时间 评测时间
2019-03-12 10:40:25 2020-08-01 01:24:40
#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.67 us64 KBWrong AnswerScore: -100

Subtask #1 Testcase #244.2 us64 KBAcceptedScore: 100

Subtask #1 Testcase #344.58 us64 KBAcceptedScore: 0

Subtask #1 Testcase #443.7 us64 KBAcceptedScore: 0

Subtask #1 Testcase #544.43 us64 KBAcceptedScore: 0

Subtask #1 Testcase #643.4 us64 KBAcceptedScore: 0

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

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

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

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

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

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

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

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

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

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

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

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


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