提交记录 20778


用户 题目 状态 得分 用时 内存 语言 代码长度
ASnown 1006. 【模板题】后缀排序 Runtime Error 0 173.924 ms 4584 KB C++14 1.45 KB
提交时间 评测时间
2024-01-02 16:21:49 2024-01-02 16:21:58
#include<bits/stdc++.h>
#define file(F) freopen(#F".in","r",stdin),freopen(#F".out","w",stdout)
using namespace std;
using ll=long long;
void Solve();
const int N = 1e5+15;
int n;
string s;
int sa[N],rk[N],oldrk[N];
bool cmp(int x,int y,int w) {
   return oldrk[x]==oldrk[y]&&(x+w>=n?y+w>=n:oldrk[x+w]==oldrk[y+w]);
}
void suffix_array() {
   int m=127;
   vector<int> cnt(m+1),key1(n),id(n);
   for(int i=0;i<n;i++) cnt[rk[i]=s[i]]++;
   for(int i=1;i<=m;i++) cnt[i]+=cnt[i-1];
   for(int i=n-1;i>=0;i--) sa[--cnt[rk[i]]]=i;
   for(int w=1;w<n;w<<=1) {
      int p=0;
      for(int i=n-1;i>=n-w;i--) id[p++]=i;
      for(int i=0;i<n;i++) if(sa[i]>=w) id[p++]=sa[i]-w;
      vector<int>(m+1,0).swap(cnt);
      for(int i=0;i<n;i++) cnt[key1[i]=rk[id[i]]]++;
      for(int i=1;i<=m;i++) cnt[i]+=cnt[i-1];
      for(int i=n-1;i>=0;i--) sa[--cnt[key1[i]]]=id[i];
      memcpy(oldrk,rk,n<<2);
      rk[sa[0]]=m=0;
      for(int i=1;i<n;i++) rk[sa[i]]=cmp(sa[i],sa[i-1],w)?m:++m;
      if(++m==n) break;
   }
}
int height[N];
void lcp_array() {
   int h=0;
   for(int i=0;i<n;i++) if(rk[i]) {
      if(h) --h;
      while(s[i+h]==s[sa[rk[i]-1]+h]) ++h;
      height[rk[i]]=h;
   }
}
signed main() {
#ifndef ONLINE_JUDGE

#endif
   cin.tie(nullptr)->sync_with_stdio(false);
   Solve();
   return 0;
}
void Solve() {
   cin>>s; n=s.size();
   suffix_array();
   for(int i=0;i<n;i++) printf("%d ",sa[i]+1); puts("");
   lcp_array();
   for(int i=1;i<n;i++) printf("%d ",height[i]); puts("");
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #1173.924 ms72 KBRuntime ErrorScore: 0

Subtask #1 Testcase #241.89 us80 KBAcceptedScore: 0

Subtask #1 Testcase #341.15 us80 KBAcceptedScore: 0

Subtask #1 Testcase #447.09 us84 KBAcceptedScore: 0

Subtask #1 Testcase #546.46 us84 KBAcceptedScore: 0

Subtask #1 Testcase #646.77 us84 KBAcceptedScore: 0

Subtask #1 Testcase #729.671 ms3 MB + 680 KBAcceptedScore: 0

Subtask #1 Testcase #846.301 ms4 MB + 488 KBAcceptedScore: 0

Subtask #1 Testcase #932.015 ms3 MB + 772 KBAcceptedScore: 0

Subtask #1 Testcase #1020.8 ms2 MB + 536 KBAcceptedScore: 0

Subtask #1 Testcase #1121.458 ms2 MB + 740 KBAcceptedScore: 0

Subtask #1 Testcase #1237.629 ms3 MB + 520 KBWrong AnswerScore: 0

Subtask #1 Testcase #1337.453 ms4 MB + 304 KBWrong AnswerScore: 0

Subtask #1 Testcase #1446.219 ms4 MB + 256 KBWrong AnswerScore: 0

Subtask #1 Testcase #1545.883 ms4 MB + 316 KBWrong AnswerScore: 0

Subtask #1 Testcase #1638.198 ms3 MB + 336 KBWrong AnswerScore: 0

Subtask #1 Testcase #1737.528 ms4 MB + 136 KBAcceptedScore: 0

Subtask #1 Testcase #1837.514 ms4 MB + 136 KBAcceptedScore: 0


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