QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#448024 | #7406. Longest Lyndon Prefix | Crying | AC ✓ | 23ms | 7432kb | C++14 | 1.9kb | 2024-06-19 09:13:26 | 2024-06-19 09:13:28 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long ll;
const int MAXN = 1e5+10;
void tomin(int& x,int y){x = min(x,y);}
void tomax(int& x,int y){x = max(x,y);}
//
int T,n; string s;
namespace SA{
int rk[MAXN*2],oldrk[MAXN*2],cnt[MAXN],sa[MAXN],tmp[MAXN],m;
void build(){
fill(rk+1,rk+1+2*n,0); fill(oldrk+1,oldrk+1+2*n,0);
m = max(n,150); fill(cnt+1,cnt+1+m,0);
for(int i=1;i<=n;i++)rk[i] = s[i],cnt[rk[i]]++;
for(int i=1;i<=m;i++)cnt[i] += cnt[i-1];
for(int i=n;i>=1;i--)sa[cnt[rk[i]]--] = i;
for(int w=1,tot;w<n;w<<=1){
tot = 0; for(int i=n-w+1;i<=n;i++)tmp[++tot] = i;
for(int i=1;i<=n;i++)if(sa[i]>w)tmp[++tot] = sa[i]-w;
fill(cnt+1,cnt+1+m,0);
for(int i=1;i<=n;i++)cnt[rk[i]]++;
for(int i=1;i<=m;i++)cnt[i] += cnt[i-1];
for(int i=n;i>=1;i--)sa[cnt[rk[tmp[i]]]--] = tmp[i];
//
for(int i=1;i<=n;i++)oldrk[i] = rk[i];
rk[sa[1]] = 1;
for(int i=2;i<=n;i++){
rk[sa[i]] = rk[sa[i-1]] + \
!(oldrk[sa[i]] == oldrk[sa[i-1]] && oldrk[sa[i]+w] == oldrk[sa[i-1]+w]);
}
}
}
} using SA::rk;
#define lowbit(x) (x&(-x))
struct BIT{
int t[MAXN];
void init(){fill(t+1,t+1+n,n+1);}
void mdf(int x,int v){for(;x<=n;x+=lowbit(x))tomin(t[x],v);}
int qry(int x){int S=n+1;for(;x;x-=lowbit(x))tomin(S,t[x]);return S;}
}bit;
int ans[MAXN];
void solve(){
cin>>n>>s; s=" "+s;
if(n==1)return void(cout<<"1\n");
SA::build(); bit.init();
for(int i=n;i>=1;i--){
int pos = bit.qry(rk[i]); ans[i] = pos-i;
bit.mdf(rk[i],i);
}
for(int i=1;i<=n;i++)cout<<ans[i]<<" "; cout<<"\n";
}
int main(){
ios::sync_with_stdio(false); cin.tie(0);
cin>>T;
while(T--)solve();
return 0;
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5584kb
input:
3 3 aaa 3 aab 3 cba
output:
1 1 1 3 2 1 1 1 1
result:
ok 9 numbers
Test #2:
score: 0
Accepted
time: 10ms
memory: 5828kb
input:
10000 10 ababbbbaaa 6 aabbaa 3 abb 9 bababbbbb 9 abbaaaaaa 8 ababbaab 7 abbbbbb 7 aaabaaa 2 ba 10 abaababbab 2 ab 1 a 1 a 5 ababa 6 aaabba 2 ba 4 abba 5 bbbba 9 aabbbbbaa 10 baaabaaaba 10 babbbbbbaa 9 babaaabba 1 b 6 abbbaa 7 aaaaaab 10 baaaaabaaa 9 bbbbabbba 3 bbb 8 abaababa 7 bbbbaba 5 ababb 1 b 7...
output:
7 1 5 1 1 1 1 1 1 1 4 3 1 1 1 1 3 1 1 1 8 1 6 1 1 1 1 1 3 1 1 1 1 1 1 1 1 5 1 3 1 1 3 2 1 7 1 1 1 1 1 1 4 3 2 1 1 1 1 1 1 2 1 8 5 1 3 1 1 2 1 2 1 1 1 2 1 2 1 1 5 4 3 1 1 1 1 1 3 1 1 1 1 1 1 1 1 7 6 1 1 1 1 1 1 1 1 4 3 2 1 4 3 2 1 1 1 7 1 1 1 1 1 1 1 1 1 2 1 5 4 3 1 1 1 1 4 1 1 1 ...
result:
ok 54963 numbers
Test #3:
score: 0
Accepted
time: 9ms
memory: 3568kb
input:
10000 4 cbcc 7 cccbcac 3 cac 3 cba 6 caaacb 9 aaabaccac 8 acbabbab 7 cbabcac 2 ba 4 caab 4 bcac 8 aacabcac 8 cbbbacab 7 cbcacca 4 aaac 3 bac 10 acacbabaab 6 ccabba 6 cbccca 5 cbabb 9 acacbcbba 1 c 9 aaacacaba 10 aacbaaacbc 5 bbaac 8 bbaabbab 3 bac 3 cbb 3 caa 3 abb 2 bc 8 abcacbca 6 bbabab 5 bcbca 1...
output:
1 3 1 1 1 1 1 2 1 2 1 1 2 1 1 1 1 1 5 4 3 1 1 9 8 7 1 3 1 1 2 1 3 1 1 3 1 1 2 1 1 1 5 2 1 2 1 1 1 1 3 2 1 2 1 2 1 8 2 1 5 2 1 2 1 1 1 1 1 2 1 2 1 1 2 1 3 1 1 1 4 3 2 1 1 2 1 5 1 3 1 1 2 1 3 2 1 1 1 3 1 1 1 1 4 1 1 1 1 1 1 3 1 1 8 1 6 1 2 1 1 1 1 1 8 7 2 1 2 1 2 1 1 4 3 1 1 6 5 ...
result:
ok 54644 numbers
Test #4:
score: 0
Accepted
time: 9ms
memory: 5584kb
input:
10000 8 fddfiagb 5 cabjf 9 cgcbjbdfd 1 a 1 j 3 gcg 3 gba 7 cagdcfh 6 jaidja 2 fh 5 iefej 1 c 7 ggdghae 8 aeaibgge 6 bgihie 9 dhafgiief 6 bhcjih 7 iaajfhe 1 g 1 h 2 hb 3 bac 6 gfdcgc 4 fiad 9 gchaceeaj 10 agjacfdggg 9 bbhiffbgg 8 eeeefjcf 7 afcgiea 2 gj 8 gbiijidi 1 b 6 jejdea 3 fcc 6 ghaijb 10 cecgd...
output:
1 4 3 2 1 3 1 1 1 4 3 1 1 2 1 1 2 1 4 2 1 1 1 1 1 2 1 1 1 1 1 6 1 1 3 2 1 1 4 1 2 1 1 2 1 1 4 1 2 1 1 1 1 3 2 1 2 1 8 1 6 1 4 1 1 1 6 4 1 2 1 1 2 1 7 4 3 1 1 2 1 6 1 4 1 1 1 1 6 5 1 2 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 2 1 2 1 1 2 1 6 3 1 1 2 1 3 2 1 7 6 1 4 1 1 1 9 5 2 1 1 1 3 1 1 ...
result:
ok 54830 numbers
Test #5:
score: 0
Accepted
time: 10ms
memory: 5600kb
input:
10000 6 wjgjli 2 um 10 ztmekuwlby 10 waawouorxc 7 juqxdzu 5 kimcu 6 euxxiw 5 uizus 7 wpuyrwg 8 tsdbixbu 8 qsparfin 3 jwn 5 pbiul 9 dcglefecs 1 u 7 sprjnyj 10 npiglkutgk 3 ihv 10 hkjelyarxa 9 abswbhkuw 9 ngohupqot 2 am 3 aax 7 lfpljzo 6 kgetfz 5 wbvwv 6 indqlw 3 qym 4 sddd 2 mt 7 klzloba 9 myifxnhkw ...
output:
1 1 4 2 1 1 1 1 1 1 1 5 4 2 1 1 2 1 1 9 8 1 2 1 3 2 1 1 4 1 2 1 3 1 1 1 2 1 2 1 6 3 1 1 2 1 1 4 1 1 1 1 5 2 1 2 1 1 1 1 1 5 2 1 2 1 2 1 1 5 1 3 2 1 3 1 1 1 4 3 1 1 1 8 2 1 2 1 1 2 1 1 1 2 1 3 2 1 1 2 1 1 5 1 3 1 1 2 1 1 2 1 3 1 1 3 2 1 3 2 1 1 9 3 2 1 5 4 3 2 1 1 8 1 6 1 2 1 2 1 ...
result:
ok 55358 numbers
Test #6:
score: 0
Accepted
time: 6ms
memory: 5680kb
input:
1000 23 jdefdahaejiebhbbachgbea 10 eccjdgfdfd 45 aggeechjbaabeccaghcehahgeadahaececgghgijiajdh 32 bgfafgbhechfjbcjadcdbabhgbdgcehf 49 jcabigjdhfaagahjihebibffdebhdgjeiiijjacahiaggcibg 17 gifciaaaechbehbie 82 bcdegeehagadfhfagajfibiegifcfjddibhjhifceijjgedadgighaffcjehaihahcddbjjhghghieafec 88 jiieba...
output:
1 3 2 1 1 2 1 9 3 1 1 1 2 1 1 1 6 3 1 1 2 1 1 1 9 8 1 3 1 1 2 1 1 9 1 1 1 1 3 2 1 1 36 35 4 1 1 1 10 2 1 3 2 1 4 1 1 1 20 1 2 1 16 1 10 1 8 7 6 1 4 2 1 1 4 1 2 1 3 1 1 13 2 1 7 1 1 4 1 2 1 3 2 1 5 1 2 1 1 11 3 1 1 7 2 1 4 3 1 1 1 1 8 7 1 2 1 3 1 1 39 26 1 24 3 1 1 1 1 2 1 16 1 1 2 1 11 1 9 2 1 6...
result:
ok 52575 numbers
Test #7:
score: 0
Accepted
time: 3ms
memory: 5740kb
input:
100 958 bcaegajcfehihhaijijiagcdhchdgacaiffhcgeacceefbfedebddghdefjjchabccdfdhfafihcjcjhdjbhhaeececaiebiejahgdceicfbdcaegjjaecbfhiegabhcbbjgibhdaeegaffefjfjbhiaiccaccicigfjdjabfdagbdbbbahddfjbgfcgdccgehcijfhjeahefbcjfedacdghjbcedigcijihbajfcfeejgedebcjcgjfbaiabcbcciejehbhjegfagajdaedhijjfiaigifgheff...
output:
2 1 27 2 1 9 1 7 1 5 2 1 1 1 6 2 1 2 1 1 9 1 7 2 1 4 1 2 1 33 1 8 1 3 2 1 3 1 1 23 5 4 3 2 1 5 1 1 2 1 12 9 3 2 1 5 4 3 1 1 2 1 189 8 7 6 5 1 3 1 1 14 3 1 1 7 1 5 1 1 2 1 3 1 1 30 1 1 2 1 1 7 1 1 4 1 2 1 12 1 1 1 5 2 1 2 1 3 1 1 5 4 3 1 1 9 1 1 6 3 2 1 2 1 42 3 1 1 8 4 1 2 1 3 1 1 19 3 2 1 15 1 1 5 ...
result:
ok 52113 numbers
Test #8:
score: 0
Accepted
time: 6ms
memory: 5664kb
input:
100 917 urldtufacwbinfdubedmcwhgopzwzdgctwdxzdpkjdvsjqwhfmxlbjaniolzgfjetehrqvcvxmbpkcgccxteriwvzuhflkbhqkzzqcuodovddiitnmjnptqpnrvoqdhvpcvbzqejvkecwaynsuqkvbubwouwrmzqqlkelnculupjheobidrworymefjhvggxeofaksrokysyrnndbfcwsntyvcojnoyumlalojfjvtfejqcbvjlizdyneegubsfucawlurjletoyjfxegalalcnytyjjjiwzkbkc...
output:
1 1 1 4 2 1 1 746 2 1 6 2 1 1 2 1 38 1 2 1 11 1 1 6 5 4 1 2 1 2 1 21 2 1 3 2 1 15 1 1 1 11 1 1 3 2 1 1 4 2 1 1 2 1 141 1 4 1 2 1 1 2 1 2 1 5 4 1 2 1 4 2 1 1 20 1 1 2 1 15 14 1 1 11 1 5 1 2 1 1 1 3 1 1 47 6 1 4 1 1 1 30 1 1 3 2 1 22 17 16 15 1 1 1 11 10 3 1 1 1 5 2 1 2 1 4 3 1 1 2 1 10 1 1 4 3 1 1 1 ...
result:
ok 48866 numbers
Test #9:
score: 0
Accepted
time: 23ms
memory: 7256kb
input:
1 100000 bbbabaabaaabaabbbabaababbabbbabaaaababbabaababbaababbabbbbaaababbaaaaabaabbbabbbaababaabbaabbababbabbabababbaaaabbabbbbbbbbbbabaabbbabbbaaaabaaaaaabbbaababaaabbaabaabbaabbaaabababbaabbaaaaaabbbaaabaababbbbbaaaabbaababaabbbbbbabababaabababaaaabbbbbbaabbbabaaaabbbababaaaabbaaaaaabbabaaabaabba...
output:
1 1 1 2 1 3 2 1 23 22 2 1 7 4 1 1 1 2 1 12 9 1 7 1 1 4 1 1 1 2 1 34 26 8 5 1 3 1 1 2 1 17 5 1 3 1 1 11 10 1 8 1 1 5 1 1 1 1 7 6 5 1 3 1 1 76 70 41 40 2 1 9 4 1 1 1 4 1 1 1 28 2 1 2 1 23 3 1 1 19 3 1 1 8 1 3 1 1 3 1 1 7 1 5 1 3 1 1 28 27 26 14 1 1 11 1 1 1 1 1 1 1 1 1 1 2 1 9 4 1 1 1 4 1 1 1 5 4 3 2 ...
result:
ok 100000 numbers
Test #10:
score: 0
Accepted
time: 18ms
memory: 7416kb
input:
1 100000 caabbccaaabcbbbcacbbbbbaabacabcaacacbabbcacacaaccacbbccbabbaccccbaccabcabacbbccccacbabaccacbaaabcccacaccbbaaacbbbcacbccbaaaabaabbaacaaacaaacbaacbcaaacccabcccbbacccccaacbccabbbcaccaaaccbcccbbcbacccaaacbaabaaabaabaccccccbcccccaabcaacbbcbbaacbccabccbbbbabbcbcbcbabcbaaabccccaaabacaaacaaabbabbca...
output:
1 6 5 4 3 1 1 113 15 14 2 1 4 3 2 1 7 1 1 1 1 1 1 69 7 1 2 1 3 2 1 61 5 1 3 1 1 8 3 2 1 2 1 2 1 47 3 1 1 7 1 4 3 1 1 1 15 1 1 6 1 1 1 1 1 3 1 1 3 2 1 21 1 8 1 6 5 1 1 1 1 3 1 1 8 1 3 1 1 3 1 1 28 13 12 4 1 1 1 7 1 5 1 1 1 1 14 13 12 1 4 3 2 1 6 1 3 1 1 1 180 83 10 2 1 7 3 1 1 3 2 1 72 3 2 1 60 9 3 1...
result:
ok 100000 numbers
Test #11:
score: 0
Accepted
time: 21ms
memory: 7288kb
input:
1 100000 hbjlrpypvmluheuxuoquywmrtabyafdpxbvahkvzbqachlachljnappbkfetpkkvazifiswufsuxedthevgdtpljopiqgrtkajrblfflhnmtapnqiwzhphkmimlooxnyltzbskmgybtfgovrduecgarajrvotkaewgedvzaldsxksqyhfajrjdjapnfwgtrwgiraaqafcooyiryhmvtgfspqayywtleaduegvigxpuqmojqbvbdpwficpditskecryzbciajujgrwxglfwpjinrjuwfwsqqwjus...
output:
1 24 10 9 1 2 1 2 1 1 2 1 1 12 2 1 1 5 4 3 1 1 3 2 1 170 2 1 14 1 3 2 1 2 1 7 4 3 2 1 2 1 153 3 2 1 149 5 4 1 2 1 44 1 1 9 1 1 6 1 1 3 2 1 32 1 1 9 4 3 1 1 4 3 2 1 1 19 1 1 3 1 1 13 1 1 1 3 2 1 2 1 4 2 1 1 62 2 1 9 1 7 6 1 4 1 2 1 43 1 2 1 3 2 1 2 1 14 2 1 11 1 9 3 2 1 2 1 3 2 1 18 1 2 1 2 1 12 1 5 ...
result:
ok 100000 numbers
Test #12:
score: 0
Accepted
time: 21ms
memory: 7184kb
input:
1 100000 abacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabahabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabaiabacabadabacabaeabacabadabacabafaba...
output:
65536 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 16 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 32 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 16 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 64 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 16 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 32 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 16 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1 128 1 2 1 4 1 2 1 8 1 2 1 4 1 2 1...
result:
ok 100000 numbers
Test #13:
score: 0
Accepted
time: 18ms
memory: 7260kb
input:
1 100000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 100000 numbers
Test #14:
score: 0
Accepted
time: 21ms
memory: 7432kb
input:
1 100000 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
100000 99999 99998 99997 99996 99995 99994 99993 99992 99991 99990 99989 99988 99987 99986 99985 99984 99983 99982 99981 99980 99979 99978 99977 99976 99975 99974 99973 99972 99971 99970 99969 99968 99967 99966 99965 99964 99963 99962 99961 99960 99959 99958 99957 99956 99955 99954 99953 99952 99951...
result:
ok 100000 numbers
Test #15:
score: 0
Accepted
time: 19ms
memory: 7228kb
input:
1 100000 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 100000 numbers
Extra Test:
score: 0
Extra Test Passed