提交记录 15768


用户 题目 状态 得分 用时 内存 语言 代码长度
sumlist 1006. 【模板题】后缀排序 Wrong Answer 0 48.468 ms 3992 KB C++11 1.81 KB
提交时间 评测时间
2021-02-04 09:07:43 2021-02-04 09:07:51
#include <bits/stdc++.h>
#define DEBUG fprintf(stderr, "Passing [%s] line %d\n", __FUNCTION__, __LINE__)
#define File(x) freopen(x".in","r",stdin); freopen(x".out","w",stdout)
#define DC int T = gi <int> (); while (T--)

using namespace std;

typedef long long LL;
typedef pair <int, int> PII;
typedef pair <int, PII> PIII;

template <typename T>
inline T gi()
{
	T f = 1, x = 0; char c = getchar();
	while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
	while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
	return f * x;
}

const int INF = 0x3f3f3f3f, N = 100003, M = N << 1;

char s[N];
int m, n, h, p, sa[N], rk[N], cnt[N], id[N], px[N], oldrk[M], ht[M];

inline bool cmp(int x, int y) {return oldrk[x] == oldrk[y] && oldrk[x + h] == oldrk[y + h];}

int main()
{
	//File("");
	scanf("%s", s + 1); n = strlen(s + 1);
	m = 300;
	for (int i = 1; i <= m; i+=1) cnt[i] = 0;
	for (int i = 1; i <= n; i+=1) ++cnt[rk[i] = s[i]];
	for (int i = 1; i <= m; i+=1) cnt[i] += cnt[i - 1];
	for (int i = n; i >= 1; i-=1) sa[cnt[rk[i]]--] = i;
	for (h = 1, p = 0; h < n; h <<= 1, m = p)
	{
		p = 0;
		for (int i = n; i > n - h; i-=1) id[++p] = i;
		for (int i = 1; i <= n; i+=1) if (sa[i] > h) id[++p] = sa[i] - h;
		for (int i = 1; i <= m; i+=1) cnt[i] = 0;
		for (int i = 1; i <= n; i+=1) ++cnt[px[i] = rk[id[i]]];
		for (int i = 1; i <= m; i+=1) cnt[i] += cnt[i - 1];
		for (int i = n; i >= 1; i-=1) sa[cnt[px[i]]--] = id[i];
		for (int i = 1; i <= n; i+=1) oldrk[i] = rk[i];
		p = 0;
		for (int i = 1; i <= n; i+=1) if (cmp(sa[i], sa[i - 1])) rk[sa[i]] = p; else rk[sa[i]] = ++p;
	}
	for (int i = 1; i <= n; i+=1) printf("%d ", sa[i]); puts("");
	for (int i = 1, k = 0; i <= n; i+=1)
	{
		if (k) --k;
		while (s[i + k] == s[sa[rk[i] - 1] + k]) ++k;
		ht[rk[i]] = k;
	}
	for (int i = 2; i <= n; i+=1) printf("%d ", ht[i]);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #136.51 us56 KBWrong AnswerScore: -100

Subtask #1 Testcase #237.74 us68 KBAcceptedScore: 100

Subtask #1 Testcase #336.94 us68 KBAcceptedScore: 0

Subtask #1 Testcase #442.47 us68 KBAcceptedScore: 0

Subtask #1 Testcase #541.77 us68 KBAcceptedScore: 0

Subtask #1 Testcase #642.81 us68 KBAcceptedScore: 0

Subtask #1 Testcase #748.468 ms3 MB + 572 KBAcceptedScore: 0

Subtask #1 Testcase #848.289 ms3 MB + 760 KBAcceptedScore: 0

Subtask #1 Testcase #948.25 ms3 MB + 624 KBAcceptedScore: 0

Subtask #1 Testcase #1029.851 ms2 MB + 400 KBAcceptedScore: 0

Subtask #1 Testcase #1129.429 ms2 MB + 440 KBAcceptedScore: 0

Subtask #1 Testcase #1237.995 ms3 MB + 824 KBAcceptedScore: 0

Subtask #1 Testcase #1337.991 ms3 MB + 920 KBAcceptedScore: 0

Subtask #1 Testcase #1446.82 ms3 MB + 652 KBAcceptedScore: 0

Subtask #1 Testcase #1546.319 ms3 MB + 668 KBAcceptedScore: 0

Subtask #1 Testcase #1637.966 ms3 MB + 824 KBAcceptedScore: 0

Subtask #1 Testcase #1737.66 ms3 MB + 824 KBAcceptedScore: 0

Subtask #1 Testcase #1837.918 ms3 MB + 824 KBAcceptedScore: 0


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