QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#211429 | #7406. Longest Lyndon Prefix | SolitaryDream# | AC ✓ | 14ms | 7756kb | C++17 | 1.5kb | 2023-10-12 16:16:02 | 2023-10-12 16:16:02 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define FOR(i,s,t) for(int i=(s),_t=(t); i<=_t; ++i)
#define DOR(i,s,t) for(int i=(s),_t=(t); i>=_t; --i)
typedef long long ll;
const ll Mod=(1ll<<61)-1;
const int base=233;
const int N=1e5+50;
char str[N];
__int128 h[N];
__int128 sum[N];
ll ha(int l,int r) {
__int128 v=(sum[r]-sum[l-1]*h[r-l+1])%Mod;
if(v<0) v+=Mod;
return v;
}
bool cmp(int a,int b,int c,int d) {
int L=1,R=min(b-a+1,d-c+1),l=0;
while(L<=R) {
int mid=L+R>>1;
if(ha(a,a+mid-1)==ha(c,c+mid-1)) l=mid,L=mid+1;
else R=mid-1;
}
int pa=a+l,pc=c+l;
// cerr << a << ' ' << b << ' ' << c << ' ' << d << ' ' << l << endl;
if(pa>b && pc>d) return 0;
else if(pa>b) return 1;
else if(pc>d) return 0;
else return str[pa]<str[pc];
}
int stk[N];
int ans[N];
void solve() {
int n;
cin >> n;
cin >> str+1;
h[0]=1;
FOR(i,1,n) h[i]=h[i-1]*base%Mod;
FOR(i,1,n) sum[i]=(sum[i-1]*base+str[i])%Mod;
int K=0;
stk[K]=n+1;
// cerr << " -- " << endl;
DOR(i,n,1) {
// cerr << i << endl;
while(K && cmp(i,stk[K]-1,stk[K],stk[K-1]-1)) {
--K;
}
// cerr << i << endl;
ans[i]=stk[K]-i;
stk[++K]=i;
}
FOR(i,1,n) cout << ans[i] << " \n"[i==n];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while(T--) solve();
return 0;
}
这程序好像有点Bug,我给组数据试试?
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5664kb
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: 7ms
memory: 5688kb
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 1 1 7 6 5 4 3 2 1 1 ...
result:
ok 54963 numbers
Test #3:
score: 0
Accepted
time: 3ms
memory: 5744kb
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 4 1 2 1 1 1 3 2 1 1 1 ...
result:
ok 54644 numbers
Test #4:
score: 0
Accepted
time: 6ms
memory: 5684kb
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 6 5 4 3 2 1 2 1 6 1 4 ...
result:
ok 54830 numbers
Test #5:
score: 0
Accepted
time: 6ms
memory: 5676kb
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 2 1 3 2 1 1 6 1 1 3 ...
result:
ok 55358 numbers
Test #6:
score: 0
Accepted
time: 3ms
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 5 4...
result:
ok 52575 numbers
Test #7:
score: 0
Accepted
time: 3ms
memory: 3728kb
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: 3ms
memory: 3748kb
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: 14ms
memory: 7360kb
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: 10ms
memory: 7356kb
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: 9ms
memory: 7316kb
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: 12ms
memory: 7296kb
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: 4ms
memory: 7692kb
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: 9ms
memory: 7316kb
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: 4ms
memory: 7756kb
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