QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#615240 | #7780. Dark LaTeX vs. Light LaTeX | _Hugoi_# | ML | 272ms | 201028kb | C++14 | 1.8kb | 2024-10-05 17:54:39 | 2024-10-05 17:54:42 |
Judging History
answer
#include"bits/stdc++.h"
using namespace std;
const int maxn = 5010;
const int maxN = 12500000;
int n,m;
char a[maxn],b[maxn];
int A[maxn][maxn],B[maxn][maxn],C[maxn][maxn];
void GetLcp(char* a,char* b,int Ta,int Tb){
for(int i=Ta;i>=1;i--)
for(int j=Tb;j>=1;j--){
if(a[i]==b[j])C[i][j]=C[i+1][j+1]+1;
else C[i][j]=0;
}
}
void GetLcs(char* a,char* b,int Ta,int Tb){
for(int i=1;i<=Ta;i++)
for(int j=1;j<=Tb;j++){
if(a[i]==b[j])A[i][j]=A[i-1][j-1]+1;
else A[i][j]=0;
}
}
struct Node{
int s[26],Su;
}Tr[maxN];
int rt=1,Idx=1;
void Insert(char* s){
int x=rt,Ln=strlen(s+1);
for(int i=1;i<=Ln;i++){
int c=s[i]-'a';
if(!Tr[x].s[c])Tr[x].s[c]=++Idx;
Tr[x=Tr[x].s[c]].Su++;
}
}
void Journey(char* s,int *o){
int x=rt,Ln=strlen(s+1);
//cout<<Tr[rt].s[1]<<endl;
for(int i=1;i<=Ln;i++){
int c=s[i]-'a';
x=Tr[x].s[c];
//cout<<"Jrn:"<<x<<' '<<Tr[x].Su<<' '<<c<<endl;
o[i]=Tr[x].Su;
}
}
void Clear(){
for(int i=1;i<=Idx;i++){
for(int j=0;j<26;j++)
Tr[i].s[j]=0;
Tr[i].Su=0;
}
Idx=1,rt=1;
}
int s[maxn];
long long Ans=0;
void Solve(){
GetLcs(a,a,n,n);
for(int j=1;j<=m;j++)
Insert(b+j-1);
for(int l=2;l<=n;l++){
Journey(a+l-1,s);
for(int i=1;i<=n;i++)
s[i]=s[i]+s[i-1];
for(int r=l;r<=n;r++){
if(!A[l-1][r])continue;
int L=min(r-l+1,A[l-1][r])-1;
if(min(r-l+1,A[l-1][r])==r-l+1)Ans+=s[r-l];
else Ans+=s[r-l]-s[r-l-A[l-1][r]];
/*cout<<l<<' '<<r<<endl;
for(int i=0;i<=n;i++)
cout<<s[i]<<' ';
cout<<endl;*/
}
}
Clear();
}
int main(){
scanf("%s%s",a+1,b+1);
n=strlen(a+1),m=strlen(b+1);
GetLcp(a,b,n,m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
Ans+=C[i][j];
Solve();
swap(a,b),swap(n,m);
Solve();
cout<<Ans<<endl;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3720kb
input:
abab ab
output:
8
result:
ok 1 number(s): "8"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3664kb
input:
abab abaaab
output:
29
result:
ok 1 number(s): "29"
Test #3:
score: 0
Accepted
time: 1ms
memory: 5844kb
input:
abcd abcde
output:
10
result:
ok 1 number(s): "10"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3780kb
input:
aaba ba
output:
6
result:
ok 1 number(s): "6"
Test #5:
score: 0
Accepted
time: 1ms
memory: 5876kb
input:
babababaaabbaabababbbaabbbababbaaaaa aaaabbaababbab
output:
1161
result:
ok 1 number(s): "1161"
Test #6:
score: 0
Accepted
time: 272ms
memory: 201028kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
78156256250000
result:
ok 1 number(s): "78156256250000"
Test #7:
score: 0
Accepted
time: 20ms
memory: 67316kb
input:
gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...
output:
60716448
result:
ok 1 number(s): "60716448"
Test #8:
score: 0
Accepted
time: 20ms
memory: 72220kb
input:
mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...
output:
60679828
result:
ok 1 number(s): "60679828"
Test #9:
score: -100
Memory Limit Exceeded
input:
vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...
output:
2655796915