提交记录 11489


用户 题目 状态 得分 用时 内存 语言 代码长度
Fister 1006. 【模板题】后缀排序 Wrong Answer 0 6.362 ms 3584 KB C++ 1.67 KB
提交时间 评测时间
2020-01-18 15:11:18 2020-08-01 02:44:01
#include<bits/stdc++.h>
#define maxn 1000006
#define rep(i,j,k) for(int i=(j),LIM=(k);i<=LIM;i++)
#define per(i,j,k) for(int i=(j),LIM=(k);i>=LIM;i--)
using namespace std;

namespace SA{
	int sa[maxn],h[maxn],rk[maxn],s[maxn<<1],t[maxn<<1],p[maxn],c[maxn],l[maxn];
	#define pushS(x) sa[l[s[x]]--]=x
	#define pushL(x) sa[l[s[x]]++]=x
	#define _Sort(v) memset(sa,0,4*n),memset(c,0,4*m); 							 \
	rep(i,0,n-1) c[s[i]]++;rep(i,1,m-1) c[i]+=c[i-1];							 \
	rep(i,0,m-1) l[i]=c[i]-1;per(i,n1-1,0) pushS(v[i]);							 \
	rep(i,1,m-1) l[i]=c[i-1];rep(i,0,n-1) if(sa[i]&&t[sa[i]-1])pushL(sa[i]-1); \
	rep(i,0,m-1) l[i]=c[i]-1;per(i,n-1,0) if(sa[i]&&!t[sa[i]-1])pushS(sa[i]-1);
	void sais(int n,int m,int *s,int *t,int *p){
		int n1 = t[n-1] = 0 , ch = rk[0] = -1 , *s1 = s + n;
		per(i,n-2,0) t[i]=s[i]^s[i+1]?s[i]>s[i+1]:t[i+1];
		rep(i,0,n-1) rk[i]=t[i-1]&&!t[i]?p[n1]=i,n1++:-1;
		_Sort(p);
		for(int i=0,x,y;i<n;i++) if(~(x=rk[sa[i]])){
			if(ch<0||p[x+1]-p[x]^p[y+1]-p[y]) ch++;
			else for(int j=p[x],k=p[y];j<=p[x+1];j++,k++)
				if(s[j]^s[k]||t[j]^t[k]){ ch++;break; }
			s1[y=x]=ch;
		}
		if(ch+1<n1) sais(n1,ch+1,s1,t+n,p+n1);
		else rep(i,0,n1-1) sa[s1[i]]=i;
		rep(i,0,n1-1) s1[i]=p[sa[i]];
		_Sort(s1);
	}
	template<class T>void SA(int n,T *S){
		rep(i,0,n-1) s[i]=S[i];s[n++]=0;
		sais(n,130,s,t,p);
	}
}
char s[maxn];

namespace IO{
	char wb[1<<23],*ws=wb;
	template<class T>void put(T a,char s){
		static int q[30]={};
		if(!a) q[++q[0]]=0;
		for(;a;a/=10) q[++q[0]]=a%10;
		for(;q[0];) *(ws++)=q[q[0]--]+'0';
		*(ws++)=s;
	}
	void flush(){
		fwrite(wb,1,ws-wb,stdout);
	}
}

int main(){
	int n = fread(s,1,maxn,stdin);
	SA::SA(n,s);
	rep(i,1,n) IO::put(SA::sa[i]+1," \n"[i==n]);
	IO::flush();
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #137.5 us72 KBWrong AnswerScore: 0

Subtask #1 Testcase #243.46 us72 KBWrong AnswerScore: 0

Subtask #1 Testcase #338.91 us72 KBWrong AnswerScore: 0

Subtask #1 Testcase #437.8 us72 KBWrong AnswerScore: 0

Subtask #1 Testcase #538.47 us72 KBWrong AnswerScore: 0

Subtask #1 Testcase #638.68 us72 KBWrong AnswerScore: 0

Subtask #1 Testcase #76.106 ms3 MB + 456 KBWrong AnswerScore: 0

Subtask #1 Testcase #86.362 ms3 MB + 268 KBWrong AnswerScore: 0

Subtask #1 Testcase #96.326 ms3 MB + 320 KBWrong AnswerScore: 0

Subtask #1 Testcase #104.088 ms2 MB + 188 KBWrong AnswerScore: 0

Subtask #1 Testcase #114.163 ms2 MB + 152 KBWrong AnswerScore: 0

Subtask #1 Testcase #123.844 ms2 MB + 828 KBWrong AnswerScore: 0

Subtask #1 Testcase #133.821 ms2 MB + 828 KBWrong AnswerScore: 0

Subtask #1 Testcase #144.106 ms2 MB + 968 KBWrong AnswerScore: 0

Subtask #1 Testcase #154.107 ms2 MB + 996 KBWrong AnswerScore: 0

Subtask #1 Testcase #164.223 ms3 MB + 392 KBWrong AnswerScore: 0

Subtask #1 Testcase #174.208 ms3 MB + 512 KBWrong AnswerScore: 0

Subtask #1 Testcase #184.09 ms3 MB + 476 KBWrong AnswerScore: 0


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