提交记录 31284


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_dsh_260814 1006. 【模板题】后缀排序 Accepted 100 107.034 ms 3324 KB C++ 1.21 KB
提交时间 评测时间
2026-08-14 01:17:29 2026-08-14 01:17:35
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main() {
    char buf[100010];
    if (!fgets(buf, sizeof(buf), stdin)) return 0;
    string s(buf);
    while (!s.empty() && (s.back()=='\n'||s.back()=='\r')) s.pop_back();
    int n = s.size();
    vector<int> sa(n), rnk(n), tmp(n);
    for (int i=0;i<n;i++){sa[i]=i;rnk[i]=s[i];}
    for (int k=1;k<n;k*=2){
        auto cmp=[&](int x,int y){
            if(rnk[x]!=rnk[y])return rnk[x]<rnk[y];
            int rx=x+k<n?rnk[x+k]:-1;
            int ry=y+k<n?rnk[y+k]:-1;
            return rx<ry;
        };
        sort(sa.begin(),sa.end(),cmp);
        tmp[sa[0]]=0;
        for(int i=1;i<n;i++)tmp[sa[i]]=tmp[sa[i-1]]+(cmp(sa[i-1],sa[i])?1:0);
        swap(tmp,rnk);
    }
    vector<int> r(n);
    for(int i=0;i<n;i++)r[sa[i]]=i;
    vector<int> h(n,0);
    int k=0;
    for(int i=0;i<n;i++){
        if(r[i]==0){k=0;continue;}
        if(k)k--;
        int j=sa[r[i]-1];
        while(i+k<n&&j+k<n&&s[i+k]==s[j+k])k++;
        h[r[i]]=k;
    }
    for(int i=0;i<n;i++)printf("%d%c",sa[i]+1,i==n-1?'\n':' ');
    for(int i=1;i<n;i++)printf("%d%c",h[i],i==n-1?'\n':' ');
    if(n==1)printf("\n");
    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #121.61 us120 KBAcceptedScore: 100

Subtask #1 Testcase #220.85 us120 KBAcceptedScore: 0

Subtask #1 Testcase #319.99 us120 KBAcceptedScore: 0

Subtask #1 Testcase #427.33 us120 KBAcceptedScore: 0

Subtask #1 Testcase #526.61 us120 KBAcceptedScore: 0

Subtask #1 Testcase #629.96 us120 KBAcceptedScore: 0

Subtask #1 Testcase #792.949 ms2 MB + 896 KBAcceptedScore: 0

Subtask #1 Testcase #8107.034 ms3 MB + 60 KBAcceptedScore: 0

Subtask #1 Testcase #995.948 ms2 MB + 948 KBAcceptedScore: 0

Subtask #1 Testcase #1056.925 ms1 MB + 968 KBAcceptedScore: 0

Subtask #1 Testcase #1157.186 ms1 MB + 1008 KBAcceptedScore: 0

Subtask #1 Testcase #1299.38 ms3 MB + 252 KBAcceptedScore: 0

Subtask #1 Testcase #1397.096 ms3 MB + 220 KBAcceptedScore: 0

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

Subtask #1 Testcase #1596.711 ms2 MB + 992 KBAcceptedScore: 0

Subtask #1 Testcase #1698.397 ms3 MB + 252 KBAcceptedScore: 0

Subtask #1 Testcase #17100.19 ms3 MB + 252 KBAcceptedScore: 0

Subtask #1 Testcase #1899.701 ms3 MB + 252 KBAcceptedScore: 0


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