提交记录 7267


用户 题目 状态 得分 用时 内存 语言 代码长度
zengminghao 1006. 【模板题】后缀排序 Wrong Answer 0 168.874 ms 3232 KB C++11 1007 B
提交时间 评测时间
2019-01-20 16:03:47 2020-08-01 01:02:12
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef unsigned long long u64;
const int maxn = 1E6 + 10;
const u64 base = 20123;

int n;
char s[maxn];
u64 f[maxn], p[maxn];

void init() {
	for (int i = p[0] = 1; i <= n; i++)
		f[i] = f[i - 1] * base + s[i],
		p[i] = p[i - 1] * base;
}
u64 get_hash(int l, int r) {
	return f[r] - f[l - 1] * p[r - l + 1];
}
int lcp(int x, int y) {
	int l = 1, r = n - max(x, y) + 1, ans = 0;
	while (l <= r) {
		int mid = (l + r) / 2;
		if (get_hash(x, x + mid - 1) == get_hash(y, y + mid - 1))
			ans = mid, l = mid + 1;
		else r = mid - 1;
	}
	return ans;
}

int a[maxn];
bool cmp(int x, int y) {
	int ans = lcp(x, y);
	return s[x + ans] < s[y + ans];
}

int main() {
	scanf("%s", s + 1);
	n = strlen(s + 1); init();
	for (int i = 1; i <= n; i++)
		a[i] = i;
	sort(a + 1, a + n + 1, cmp);
	for (int i = 1; i <= n; i++)
		printf("%d ", a[i]);
	printf("\n");
	for (int i = 1; i < n; i++)
		printf("%d ", lcp(a[i], a[i + 1]));
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #110.41 us32 KBWrong AnswerScore: -100

Subtask #1 Testcase #215.34 us32 KBAcceptedScore: 100

Subtask #1 Testcase #310.86 us32 KBAcceptedScore: 0

Subtask #1 Testcase #416.68 us32 KBAcceptedScore: 0

Subtask #1 Testcase #515.67 us32 KBAcceptedScore: 0

Subtask #1 Testcase #616.32 us32 KBAcceptedScore: 0

Subtask #1 Testcase #7138.52 ms2 MB + 804 KBAcceptedScore: 0

Subtask #1 Testcase #8157.175 ms2 MB + 992 KBAcceptedScore: 0

Subtask #1 Testcase #9147.176 ms2 MB + 856 KBAcceptedScore: 0

Subtask #1 Testcase #1089.868 ms1 MB + 876 KBAcceptedScore: 0

Subtask #1 Testcase #1192.385 ms1 MB + 916 KBAcceptedScore: 0

Subtask #1 Testcase #1292.342 ms3 MB + 160 KBAcceptedScore: 0

Subtask #1 Testcase #13168.874 ms3 MB + 128 KBAcceptedScore: 0

Subtask #1 Testcase #14151.608 ms2 MB + 884 KBAcceptedScore: 0

Subtask #1 Testcase #15161.542 ms2 MB + 900 KBAcceptedScore: 0

Subtask #1 Testcase #16119.834 ms3 MB + 160 KBAcceptedScore: 0

Subtask #1 Testcase #17126.455 ms3 MB + 160 KBAcceptedScore: 0

Subtask #1 Testcase #18125.441 ms3 MB + 160 KBAcceptedScore: 0


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