QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#615297 | #7780. Dark LaTeX vs. Light LaTeX | _Hugoi_# | TL | 1ms | 3988kb | C++14 | 1.3kb | 2024-10-05 18:00:57 | 2024-10-05 18:02:48 |
Judging History
answer
#include"bits/stdc++.h"
using namespace std;
const int maxn = 5010;
const int maxN = 12500010;
int n,m;
char a[maxn],b[maxn];
int A[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])A[i][j]=A[i+1][j+1]+1;
else A[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;
}
}
unordered_map<string,int>Mp;
void Insert(char* s){
int Ln=strlen(s+1);
string St;
for(int i=1;i<=Ln;i++){
St+=s[i];
Mp[St]++;
}
}
void Journey(char* s,int *o){
int Ln=strlen(s+1);
string St;
for(int i=1;i<=Ln;i++){
St+=s[i];
o[i]=Mp[St];
}
}
void Clear(){
Mp.clear();
}
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;
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]];
}
}
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+=A[i][j];
Solve();
swap(a,b),swap(n,m);
Solve();
cout<<Ans<<endl;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3988kb
input:
abab ab
output:
8
result:
ok 1 number(s): "8"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3696kb
input:
abab abaaab
output:
29
result:
ok 1 number(s): "29"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3692kb
input:
abcd abcde
output:
10
result:
ok 1 number(s): "10"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3708kb
input:
aaba ba
output:
6
result:
ok 1 number(s): "6"
Test #5:
score: 0
Accepted
time: 1ms
memory: 3864kb
input:
babababaaabbaabababbbaabbbababbaaaaa aaaabbaababbab
output:
1161
result:
ok 1 number(s): "1161"
Test #6:
score: -100
Time Limit Exceeded
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...