提交记录 4290


用户 题目 状态 得分 用时 内存 语言 代码长度
FarmerJohn 1006. 【模板题】后缀排序 Wrong Answer 0 25.835 ms 3184 KB C++ 1.31 KB
提交时间 评测时间
2018-07-19 19:05:47 2020-07-31 22:51:05
#include <cstdio>
#include <cstring>
#define oo 2139062143
#define fo(i,x,y) for (int i=(x);i<=(y);++i)
#define fd(i,x,y) for (int i=(x);i>=(y);--i)
using namespace std;
const int N=100100;
int sa[N],rnk[N],se[N];
int tn[N],he[N];
char s[N];
int n;
bool cmp(int *r,int a,int b,int l)
{
	return r[a]==r[b]&&r[a+l]==r[b+l];
}
void gtsa(int *x,int *y,int m)
{
	fo(i,0,m) tn[i]=0;
	fo(i,1,n) ++tn[x[y[i]]];
	fo(i,1,m) tn[i]+=tn[i-1];
	fd(i,n,1) 
		sa[tn[x[y[i]]]--]=y[i];		
}
void solve(char *r,int *sa,int n,int m)
{
	int *x=rnk,*y=se,*t;
	r[n+1]=-1;
	fo(i,1,n)x[i]=r[i]-'a'+1,y[i]=i;
	gtsa(x,y,m);
	int ct=0;
	for(int len=1;len<=n;len<<=1)
	{
		ct=0;
		fo(i,n-len+1,n) y[++ct]=i;
		fo(i,1,n)if(sa[i]>len) y[++ct]=sa[i]-len;
		gtsa(x,y,m);
		t=x,x=y,y=t;x[sa[ct=1]]=1;
		fo(i,2,n) x[sa[i]]=cmp(y,sa[i-1],sa[i],len)?(ct):(++ct);
		m=ct;
	}
}
int max(int x,int y){return(x>y)?x:y;}
void gthe(char *r,int *sa,int n)
{
	fo(i,1,n) rnk[sa[i]]=i;
	int k=0;
	fo(i,1,n)
	{
		k=max(k-1,0);
		while(r[i+k]==r[sa[rnk[i]-1]+k]) ++k;
		he[rnk[i]]=k;
	} 
}
int buf[30],b0;
void write(int x)
{
	b0=0;
	if(x==0)putchar('0');
	else
	while(x) buf[++b0]=x%10,x/=10;
	fd(i,b0,1) putchar(buf[i]+'0');
}
int main()
{
	scanf("%s",s+1);n=strlen(s+1);
	solve(s,sa,n,27);
	gthe(s,sa,n);
	fo(i,1,n) write(sa[i]),putchar(' ');puts("");
	fo(i,2,n) write(he[i]),putchar(' ');
} 

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #19.62 us40 KBWrong AnswerScore: -100

Subtask #1 Testcase #211.84 us40 KBAcceptedScore: 0

Subtask #1 Testcase #311.96 us40 KBAcceptedScore: 100

Subtask #1 Testcase #411.54 us40 KBAcceptedScore: 0

Subtask #1 Testcase #512.31 us40 KBAcceptedScore: 0

Subtask #1 Testcase #611.7 us40 KBAcceptedScore: 0

Subtask #1 Testcase #725.835 ms2 MB + 788 KBAcceptedScore: 0

Subtask #1 Testcase #825.183 ms2 MB + 976 KBAcceptedScore: 0

Subtask #1 Testcase #925.418 ms2 MB + 840 KBAcceptedScore: 0

Subtask #1 Testcase #1015.534 ms1 MB + 884 KBAcceptedScore: 0

Subtask #1 Testcase #1115.06 ms1 MB + 924 KBAcceptedScore: 0

Subtask #1 Testcase #1213.111 ms3 MB + 12 KBAcceptedScore: 0

Subtask #1 Testcase #1313.295 ms3 MB + 112 KBAcceptedScore: 0

Subtask #1 Testcase #1423.801 ms2 MB + 868 KBAcceptedScore: 0

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

Subtask #1 Testcase #1613.074 ms3 MB + 12 KBAcceptedScore: 0

Subtask #1 Testcase #1713.05 ms3 MB + 12 KBAcceptedScore: 0

Subtask #1 Testcase #1813.606 ms3 MB + 12 KBAcceptedScore: 0


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