QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#93101 | #21648. Runs | zsj6315# | 70 | 727ms | 248716kb | C++14 | 2.0kb | 2023-03-31 10:55:37 | 2023-03-31 10:55:39 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define fr(i,a,b) for(int i=a;i<=b;i++)
#define ull unsigned long long
#define ll long long
#define mod 998244353
#define N 1000005
int n,cnt;
char s[N];
int x[N],y[N+N],c[N];
struct SA{
int sa[N],rk[N],h[N];
int st[20][N],lg[N];
void getsa(int n,char* s){
int m=128;
fr(i,1,m)c[i]=0;
fr(i,1,n)c[x[i]=s[i]]++;
fr(i,1,m)c[i]+=c[i-1];
for(int i=n;i;i--)sa[c[x[i]]--]=i;
for(int k=1;k<=n;k<<=1){
//deal y
int num=0;
fr(i,n-k+1,n)y[++num]=i;
fr(i,1,n)if(sa[i]>k)y[++num]=sa[i]-k;
//deal c
fr(i,1,m)c[i]=0;
fr(i,1,n)c[x[i]]++;
fr(i,1,m)c[i]+=c[i-1];
for(int i=n;i;i--)sa[c[x[y[i]]]--]=y[i],y[i]=x[i];//change y
//deal x
x[sa[1]]=1,num=1;
fr(i,2,n)x[sa[i]]=(y[sa[i]]==y[sa[i-1]]&&y[sa[i]+k]==y[sa[i-1]+k])?num:++num;
if(num==n)break;
else m=num;
}
// fr(i,1,n)printf("%d ",sa[i]);puts("");
}
void geth(){
fr(i,1,n)rk[sa[i]]=i;
int p=0;
fr(i,1,n){
if(p)p--;
if(rk[i]==1)continue;
while(i+p<=n&&sa[rk[i]-1]+p<=n&&s[i+p]==s[sa[rk[i]-1]+p])p++;
h[rk[i]]=p;
}
// fr(i,2,n)printf("%d ",h[i]);puts("");
}
void initST(){
fr(i,1,n)st[0][i]=h[i];
lg[1]=0;fr(i,2,n)lg[i]=lg[i>>1]+1;
fr(j,1,19)fr(i,1,n-(1<<j)+1)st[j][i]=min(st[j-1][i],st[j-1][i+(1<<(j-1))]);
}
int LCP(int u,int v){
if(u==v)return n-u+1;
int l=rk[u],r=rk[v];
if(l>r)swap(l,r);
l++;
int k=lg[r-l+1];
return min(st[k][l],st[k][r-(1<<k)+1]);
}
void init(int n,char* s){
getsa(n,s);
geth();
initST();
}
}A,B;
map<int,int> mp[N];
void chck(int l,int r,int p){
if(mp[l].count(r)==0)mp[l][r]=p,cnt++;
}
int main(){
scanf("%s",s+1);
n=strlen(s+1);
A.init(n,s);
reverse(s+1,s+n+1);
B.init(n,s);
reverse(s+1,s+n+1);
fr(p,1,(n>>1)){
for(int i=p;i+p<=n;i+=p){
int j=i+p;
int l=B.LCP(n-i+1,n-j+1),r=A.LCP(i,j);
if(l+r>p)chck(i-l+1,j+r-1,p);
}
}
printf("%d\n",cnt);
fr(l,1,n)for(auto p:mp[l])printf("%d %d %d\n",l,p.first,p.second);
return 0;
}
详细
Test #1:
score: 10
Accepted
time: 111ms
memory: 178128kb
input:
luynenolgrtkiqkdbpcoqsjyisilepmrkleqytdfmxrupcartchjwqhekspohcftpmkpfnwtmoqesqxluevqwewgylwgpdbgplwwbsqpigtayqmswjksngymtwulavrpjpomiedsmxtmpheoqogfwhtpdnaflsxwhlkrrnkfmfrcmvqelyjhfdylszqftndcynurbgwnnnrbkjfxioeptfaoervxgzzhovypdvfsiytviysqpzhkeiyibwhjviqjgpblmieugxroykgnloxpyyzzugirqbcwqdicloyulqij...
output:
7394 99 100 1 164 165 1 200 202 1 222 223 1 277 278 1 279 280 1 334 335 1 406 407 1 410 411 1 412 413 1 421 422 1 434 435 1 458 459 1 494 495 1 559 560 1 564 565 1 566 567 1 577 578 1 624 625 1 633 634 1 704 705 1 706 707 1 710 711 1 749 750 1 769 770 1 797 798 1 800 801 1 858 859 1 866 867 1 868 86...
result:
ok 7395 lines
Test #2:
score: 10
Accepted
time: 99ms
memory: 177780kb
input:
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...
output:
1 1 200000 1
result:
ok 2 lines
Test #3:
score: 10
Accepted
time: 181ms
memory: 182400kb
input:
bbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaaba...
output:
102706 1 2 1 1 27 11 1 70 27 1 183 70 1 479 183 1 1254 479 1 3283 1254 1 8595 3283 1 22502 8595 1 58911 22502 1 154231 58911 3 4 1 5 7 1 7 10 2 10 13 1 12 43 16 12 113 43 12 296 113 12 775 296 12 2029 775 12 5312 2029 12 13907 5312 12 36409 13907 12 95320 36409 12 200000 95320 14 15 1 16 18 1 18 21 ...
result:
ok 102707 lines
Test #4:
score: 10
Accepted
time: 139ms
memory: 176592kb
input:
dcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcd...
output:
69092 1 28 12 1 72 28 1 188 72 1 492 188 1 1288 492 1 3372 1288 1 8828 3372 1 23112 8828 1 60508 23112 1 158412 60508 4 5 1 5 12 4 12 13 1 13 44 16 13 116 44 13 304 116 13 796 304 13 2084 796 13 5456 2084 13 14284 5456 13 37396 14284 13 97904 37396 13 200000 97904 16 17 1 17 24 4 24 25 1 25 32 4 29 ...
result:
ok 69093 lines
Test #5:
score: 10
Accepted
time: 7ms
memory: 101580kb
input:
dcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcbadcbaabcdabcddcbadcbaabcdabcddcbaabcdabcddcba
output:
31 1 28 12 1 72 28 4 5 1 5 12 4 12 13 1 13 44 16 13 100 44 16 17 1 17 24 4 24 25 1 25 32 4 29 56 12 32 33 1 33 40 4 40 41 1 41 88 16 44 45 1 45 52 4 52 53 1 53 60 4 60 61 1 61 68 4 68 69 1 69 76 4 73 100 12 76 77 1 77 84 4 84 85 1 88 89 1 89 96 4 96 97 1
result:
ok 32 lines
Test #6:
score: 10
Accepted
time: 192ms
memory: 182692kb
input:
bbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbaba...
output:
140058 1 2 1 1 34 15 1 87 34 1 227 87 1 594 227 1 1555 594 1 4071 1555 1 10658 4071 1 27903 10658 1 73051 27903 1 191250 73051 2 5 2 2 14 5 3 8 3 5 6 1 6 10 2 8 13 3 10 11 1 11 14 2 14 17 1 15 53 19 15 140 53 15 367 140 15 961 367 15 2516 961 15 6587 2516 15 17245 6587 15 45148 17245 15 118199 45148...
result:
ok 140059 lines
Test #7:
score: 0
Time Limit Exceeded
input:
ghbaahxvveloseywqeuokpraqgyscdcimfioohjjnwyhdyftczjorapjhncjqetfjetxnfidbgkeesajrjxkkmutayescxxndtmryuubdgijyisstqefcayeycxccwpfpdypautdbbmblfvexakzakgzpfdrdtytyzkytfdwgqarxvyuvivysbzhgcakxbfwarwvxaufsuzprxjnhenbimlqoncmojkqbgoaiifaegpvdakmhxoplzfamkodtatwghwprerxkhtqhfcofqfqrnsgxgjsgcppmlgfrxdceyuo...
output:
result:
Test #8:
score: 10
Accepted
time: 727ms
memory: 248716kb
input:
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp...
output:
1 1 999998 1
result:
ok 2 lines
Test #9:
score: 0
Time Limit Exceeded
input:
aababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccabbccaaababbbbccaaababbbbccabbccaaababbbbccaaaba...
output:
result:
Test #10:
score: 0
Time Limit Exceeded
input:
aababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbabaababaababbbbabaababaababbbbabbbaba...