Logo Wy Online Judge

WyOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#127#3. 【模板】后缀排序__vector__1001328ms22124kbC++141.2kb2025-04-17 12:46:282025-04-17 18:37:32

answer

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int Maxn=1e6+5;
char s[Maxn];
int n,m,x[Maxn],y[Maxn],c[Maxn],sa[Maxn];
int height[Maxn],rk[Maxn];
void SA()
{	
	if(s[1]=='a'&&s[2]=='b')puts("shabi");
    for(int i=1;i<=n;i++){x[i]=s[i];++c[x[i]];}
    for(int i=2;i<=m;i++)c[i]+=c[i-1];
    for(int i=n;i>=1;i--)sa[c[x[i]]--]=i;
    for(int k=1;k<=n;k=k<<1)
    {	
        int num=0;
        for (int i=n-k+1;i<=n;++i) y[++num]=i;
        for(int i=1;i<=n;i++)
            if(sa[i]>k)y[++num]=sa[i]-k;
        for(int i=1;i<=m;i++)c[i]=0;
        for(int i=1;i<=n;i++)c[x[i]]++;
        for(int i=2;i<=m;i++)c[i]+=c[i-1];
        for(int i=n;i>=1;i--){sa[c[x[y[i]]]--]=y[i];y[i]=0;}
        swap(x,y);
        num=1;x[sa[1]]=1;
        for(int i=2;i<=n;i++)
        {	
            if(y[sa[i]]==y[sa[i-1]]&&y[sa[i]+k]==y[sa[i-1]+k])x[sa[i]]=num;
            else x[sa[i]]=++num;
        }
        if(num==n)break;
        m=num;
    }
    for(int i=1;i<=n;i++)
        printf("%d ",sa[i]);
    printf("\n");
}
int main()
{	
    scanf("%s",s+1);
    n=strlen(s+1);
    m=122;
    SA();
    //LCP(); 
    return 0;
}

这程序好像有点Bug,我给组数据试试?

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 7
Accepted
time: 3ms
memory: 17736kb

input:

5Q2K2Pz3vL3K5NFJ48Lj77MYpTRo8dq25fS26BUl59i16a9kuxuFu4d477vz0057gB00218hv69C2Wz7Fk5pMt153uVAq3F3rK0T

output:

67 61 68 62 99 87 44 70 69 32 36 3 5 77 94 11 96 89 8 56 17 54 88 63 41 13 1 33 83 74 37 45 21 57 80...

result:

ok 100 numbers

Test #2:

score: 7
Accepted
time: 8ms
memory: 18004kb

input:

5Q2K2Pz3vL3K5NFJ48Lj77MYpTRo8dq25fS26BUl59i16a9kuxuFu4d477vz0057gB00218hv69C2Wz7Fk5pMt153uVAq3F3rK0T...

output:

67 834 61 984 435 230 932 390 302 791 991 68 961 835 551 887 814 423 143 749 541 62 166 729 910 465 ...

result:

ok 1000 numbers

Test #3:

score: 7
Accepted
time: 4ms
memory: 15640kb

input:

5Q2K2Pz3vL3K5NFJ48Lj77MYpTRo8dq25fS26BUl59i16a9kuxuFu4d477vz0057gB00218hv69C2Wz7Fk5pMt153uVAq3F3rK0T...

output:

67 834 61 984 435 230 932 390 302 791 991 68 961 835 551 887 814 423 143 749 541 62 166 729 910 465 ...

result:

ok 1000 numbers

Test #4:

score: 7
Accepted
time: 22ms
memory: 16644kb

input:

5Q2K2Pz3vL3K5NFJ48Lj77MYpTRo8dq25fS26BUl59i16a9kuxuFu4d477vz0057gB00218hv69C2Wz7Fk5pMt153uVAq3F3rK0T...

output:

1215 67 7665 834 1826 7511 5919 3053 61 3312 6300 2679 1594 4074 9549 3994 1216 9041 7309 984 435 97...

result:

ok 10000 numbers

Test #5:

score: 7
Accepted
time: 14ms
memory: 15672kb

input:

5Q2K2Pz3vL3K5NFJ48Lj77MYpTRo8dq25fS26BUl59i16a9kuxuFu4d477vz0057gB00218hv69C2Wz7Fk5pMt153uVAq3F3rK0T...

output:

1215 67 7665 834 1826 7511 5919 3053 61 3312 6300 2679 1594 4074 9549 3994 1216 9041 7309 984 435 97...

result:

ok 10000 numbers

Test #6:

score: 7
Accepted
time: 31ms
memory: 19092kb

input:

5Q2K2Pz3vL3K5NFJ48Lj77MYpTRo8dq25fS26BUl59i16a9kuxuFu4d477vz0057gB00218hv69C2Wz7Fk5pMt153uVAq3F3rK0T...

output:

68971 23766 16236 84001 1215 26527 48751 32248 30140 72030 28767 92557 43162 24259 25407 54376 75855...

result:

ok 100000 numbers

Test #7:

score: 7
Accepted
time: 35ms
memory: 22096kb

input:

5Q2K2Pz3vL3K5NFJ48Lj77MYpTRo8dq25fS26BUl59i16a9kuxuFu4d477vz0057gB00218hv69C2Wz7Fk5pMt153uVAq3F3rK0T...

output:

68971 23766 16236 84001 1215 26527 48751 32248 30140 72030 28767 92557 43162 24259 25407 54376 75855...

result:

ok 100000 numbers

Test #8:

score: 7
Accepted
time: 260ms
memory: 21796kb

input:

5Q2K2Pz3vL3K5NFJ48Lj77MYpTRo8dq25fS26BUl59i16a9kuxuFu4d477vz0057gB00218hv69C2Wz7Fk5pMt153uVAq3F3rK0T...

output:

702437 852879 412799 162791 928297 702438 622989 983054 642549 261095 377477 552453 679737 416887 68...

result:

ok 1000000 numbers

Test #9:

score: 7
Accepted
time: 329ms
memory: 21868kb

input:

eX8N69cLH4G7P8QDy5156Hx8m0VN4sH9t0C4MoGd0cN51dgGXJL73z6N20CLISd0X1nhFKvdXa5q2nWCMjmkM30Es5tAZ5L6c306...

output:

38596 639028 437546 648133 351969 176869 229309 186806 709078 462998 756773 229120 449395 203997 694...

result:

ok 1000000 numbers

Test #10:

score: 7
Accepted
time: 281ms
memory: 21984kb

input:

8585jh1f9l3466C87O58gfT7sPR0Vw2kdl75l450z1aiD294Q98lb2h4eWb77E8O987OzoJ1617c76ewlDF6G35z0p51g7X53r96...

output:

73767 216802 73768 690419 604466 827813 587942 736629 238255 331491 654128 797636 599436 533392 4767...

result:

ok 1000000 numbers

Test #11:

score: 7
Accepted
time: 6ms
memory: 15688kb

input:

00000

output:

5 4 3 2 1 

result:

ok 5 number(s): "5 4 3 2 1"

Test #12:

score: 7
Accepted
time: 14ms
memory: 17736kb

input:

aaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

500 499 498 497 496 495 494 493 492 491 490 489 488 487 486 485 484 483 482 481 480 479 478 477 476 ...

result:

ok 500 numbers

Test #13:

score: 7
Accepted
time: 321ms
memory: 22124kb

input:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

1000000 999999 999998 999997 999996 999995 999994 999993 999992 999991 999990 999989 999988 999987 9...

result:

ok 1000000 numbers