提交记录 8447


用户 题目 状态 得分 用时 内存 语言 代码长度
ouuan 1006. 【模板题】后缀排序 Wrong Answer 0 1 s 4828 KB C++11 791 B
提交时间 评测时间
2019-02-17 17:09:26 2020-08-01 01:19:17
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int N=1000010;

char s[N];
int n,w,sa[N],rk[N<<1],oldrk[N]; //为了防止访问rk[i+w]导致数组越界,开两倍数组。当然也可以在访问前判断是否越界,但直接开两倍数组方便一些。

int main()
{
    int i,p;
    
    scanf("%s",s+1);
    n=strlen(s+1);
    for (i=1;i<=n;++i) rk[i]=s[i];
    
    for (w=1;w<n;++w)
    {
        for (i=1;i<=n;++i) sa[i]=i;
        sort(sa+1,sa+n+1,[](int x,int y){return rk[x]==rk[y]?rk[x+w]<rk[y+w]:rk[x]<rk[y];}); //这里用到了lambda表达式
        memcpy(oldrk,rk,sizeof(oldrk)); //由于计算rk的时候原来的rk会被覆盖,要先复制一份
        for (p=0,i=1;i<=n;++i) rk[sa[i]]=oldrk[sa[i]]==oldrk[sa[i-1]]&&oldrk[sa[i]+w]==oldrk[sa[i-1]+w]?p:++p; //若两个子串相同,它们对应的rk也需要相同,所以要去重
    }
    
    for (i=1;i<=n;++i) printf("%d ",sa[i]);
    
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #136.11 us48 KBWrong AnswerScore: 0

Subtask #1 Testcase #2752.56 us3 MB + 880 KBWrong AnswerScore: 0

Subtask #1 Testcase #3743.9 us3 MB + 880 KBWrong AnswerScore: 0

Subtask #1 Testcase #44.023 ms3 MB + 880 KBWrong AnswerScore: 0

Subtask #1 Testcase #53.791 ms3 MB + 880 KBWrong AnswerScore: 0

Subtask #1 Testcase #64.272 ms3 MB + 880 KBWrong AnswerScore: 0

Subtask #1 Testcase #71 s4 MB + 732 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #81 s4 MB + 732 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #91 s4 MB + 732 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #101 s4 MB + 428 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #111 s4 MB + 428 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #121 s4 MB + 732 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #131 s4 MB + 732 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #141 s4 MB + 732 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #151 s4 MB + 732 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #161 s4 MB + 732 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #171 s4 MB + 732 KBTime Limit ExceededScore: 0

Subtask #1 Testcase #181 s4 MB + 732 KBTime Limit ExceededScore: 0


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