提交记录 10093


用户 题目 状态 得分 用时 内存 语言 代码长度
Magolor 1006. 【模板题】后缀排序 Accepted 100 22.897 ms 4100 KB C++11 1.67 KB
提交时间 评测时间
2019-08-13 11:08:16 2020-08-01 02:01:30
#include <bits/stdc++.h>
using namespace std;
#define MAXN 100000
#define rint register int
#define gc() getchar()
inline int rf(int a=0,int s=0,int c=gc()){for(;c<48||c>57;s=c,c=gc());for(;c>47&&c<58;(a*=10)+=c-48,c=gc());return s^'-'?a:-a;}
#define BUF_SIZE 1000000
#define _END fwrite(_Ob,1,_O-_Ob,stdout), _O = _Ob
#define oc(a) (*_O++ = a)
char _Ob[BUF_SIZE+5], *_O = _Ob, _Os[25], *_Ot;
inline void os(string s){_O += s.copy(_O,s.length(),0), _O-_Ob >= BUF_SIZE-50 ? _END : 0;}
template <typename T> inline void oi(T x)
{
	if(!x){oc('0'); return;} if(x < 0) oc('-'), x = -x;
	for(_Ot = _Os; x; *_Ot++ = x%10+'0', x /= 10);
	for(; _Ot != _Os; oc(*--_Ot)); _O-_Ob >= BUF_SIZE-50 ? _END : 0;
}
int SA[MAXN+5], Rank[MAXN+5], Height[MAXN+5], n; char s[MAXN+5];
#define Radix(rk,ps) for(memset(book+1,0,m<<2), i = 1; i <= n; ++book[rk], i++);\
for(i = 1; i <= m; book[i] += book[i-1], i++); for(i = n; i; SA[book[Rank[ps]]--] = ps, i--);
void Doubling(rint i=0)
{
	static int book[MAXN+5], x[MAXN+5], m, p, L; m = 27; Radix(Rank[i]=s[i]-'a'+1,i);
	for(p = L = 1; p < n; m = p, L <<= 1)
	{
		for(p = 0, i = n-L+1; i <= n; x[++p] = i++); for(i = 1; i <= n; SA[i]>L?x[++p]=SA[i]-L:0, i++); Radix(Rank[x[i]],x[i]);
		for(memcpy(x+1,Rank+1,n<<2), Rank[SA[1]] = p = 1, i = 2; i <= n; Rank[SA[i]] = p+=x[SA[i]]^x[SA[~-i]]||x[SA[i]+L]^x[SA[~-i]+L], i++);
	}
}
void CalHeight(){for(rint i = 1, L = 0, j; i <= n; Height[Rank[i++]] = L) for(j = SA[~-Rank[i]], L-=L>0; i+L<=n&&j+L<=n&&s[i+L]==s[j+L]; ++L);}
int main()
{
	scanf("%s",s+1), n = strlen(s+1), Doubling(), CalHeight();
	for(rint i = 1; i <= n; oi(SA[i]), oc(' '), i++); oc('\n');
	for(rint i = 2; i <= n; oi(Height[i]), oc(' '), i++); oc('\n'); _END; return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #134.57 us64 KBAcceptedScore: 0

Subtask #1 Testcase #241.38 us64 KBAcceptedScore: 100

Subtask #1 Testcase #342.64 us64 KBAcceptedScore: 0

Subtask #1 Testcase #438.18 us64 KBAcceptedScore: 0

Subtask #1 Testcase #537.12 us64 KBAcceptedScore: 0

Subtask #1 Testcase #636.88 us64 KBAcceptedScore: 0

Subtask #1 Testcase #76.371 ms3 MB + 524 KBAcceptedScore: 0

Subtask #1 Testcase #822.897 ms3 MB + 932 KBAcceptedScore: 0

Subtask #1 Testcase #98.657 ms3 MB + 664 KBAcceptedScore: 0

Subtask #1 Testcase #105.44 ms2 MB + 412 KBAcceptedScore: 0

Subtask #1 Testcase #116.01 ms2 MB + 488 KBAcceptedScore: 0

Subtask #1 Testcase #1213.684 ms3 MB + 1008 KBAcceptedScore: 0

Subtask #1 Testcase #1312.411 ms4 MB + 4 KBAcceptedScore: 0

Subtask #1 Testcase #149.864 ms3 MB + 716 KBAcceptedScore: 0

Subtask #1 Testcase #159.436 ms3 MB + 740 KBAcceptedScore: 0

Subtask #1 Testcase #1613.643 ms3 MB + 1008 KBAcceptedScore: 0

Subtask #1 Testcase #1713.442 ms3 MB + 1008 KBAcceptedScore: 0

Subtask #1 Testcase #1813.679 ms3 MB + 1008 KBAcceptedScore: 0


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