提交记录 17804


用户 题目 状态 得分 用时 内存 语言 代码长度
xujindong 1006. 【模板题】后缀排序 Wrong Answer 0 1 s 2920 KB C++ 1.29 KB
提交时间 评测时间
2022-07-17 10:56:26 2022-07-17 10:56:36
#include<bits/stdc++.h>
using namespace std;
int sa[100005],rk[100005],ht[100005];
char s[100005];
void getsa(int n,char *s,int sa[],int m=122)
{
  int x[100005],y[100005],b[100005];
  memset(x,0,sizeof(x)),memset(y,0,sizeof(y)),memset(b,0,sizeof(b));
  for(int i=1;i<=n;i++)b[x[i]=s[i]]++;
  for(int i=2;i<=m;i++)b[i]+=b[i-1];
  for(int i=n;i>=1;i--)sa[b[x[i]]--]=i;
  for(int k=1;k<=n;k<<=1)
  {
    int p=0;
    for(int i=n-k+1;i<=n;i++)y[++p]=i;
    for(int i=1;i<=n;i++)if(sa[i]>k)y[++p]=sa[i]-k;
    memset(b,0,sizeof(b));
    for(int i=1;i<=n;i++)b[x[i]]++;
    for(int i=2;i<=m;i++)b[i]+=b[i-1];
    for(int i=n;i>=1;i--)sa[b[x[y[i]]]--]=y[i];
    swap(x,y),x[sa[1]]=1,p=1;
    for(int i=2;i<=n;i++)x[sa[i]]=(y[sa[i]]^y[sa[i-1]]||y[sa[i]+k]^y[sa[i-1]+k])?++p:p;
    if(p==n)break;
    m=p;
  }
}
void getht(int n,char *s,int sa[],int rk[],int ht[]){
  int hi=0;
  for(int i=1;i<=n;i++)rk[sa[i]]=i;
  for(int i=1;i<=n;i++)
  {
    if(rk[i]==1)continue;
    if(hi)hi--;
    while(sa[rk[i]-1]+hi<=n&&i+hi<=n&&s[i+hi]==s[sa[rk[i]-1]+hi])hi++;
    ht[rk[i]]=hi;
  }
}
int main(){
  scanf("%s",s+1);
  getsa(strlen(s+1),s,sa),getht(strlen(s+1),s,sa,rk,ht);
  for(int i=1;i<=strlen(s+1);i++)cout<<sa[i]<<(i==strlen(s+1)?'\n':' ');
  for(int i=2;i<=strlen(s+1);i++)cout<<ht[i]<<(i==strlen(s+1)?'\n':' ');
  return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #1221.01 us1 MB + 196 KBWrong AnswerScore: 0

Subtask #1 Testcase #2228.25 us1 MB + 200 KBAcceptedScore: 100

Subtask #1 Testcase #3226.61 us1 MB + 200 KBAcceptedScore: 0

Subtask #1 Testcase #4367.69 us1 MB + 200 KBAcceptedScore: 0

Subtask #1 Testcase #5367.76 us1 MB + 200 KBAcceptedScore: 0

Subtask #1 Testcase #6367.45 us1 MB + 200 KBAcceptedScore: 0

Subtask #1 Testcase #71 s2 MB + 848 KBTime Limit ExceededScore: -100

Subtask #1 Testcase #81 s2 MB + 824 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #91 s2 MB + 832 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #101 s2 MB + 476 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #111 s2 MB + 504 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #121 s2 MB + 872 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #131 s2 MB + 836 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #141 s2 MB + 832 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #151 s2 MB + 844 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #161 s2 MB + 864 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #171 s2 MB + 844 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #181 s2 MB + 840 KBTime Limit ExceededScore: 0


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