QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#354549 | #7780. Dark LaTeX vs. Light LaTeX | Flamire# | TL | 568ms | 13628kb | C++17 | 1.6kb | 2024-03-15 16:21:14 | 2024-03-15 16:21:15 |
Judging History
answer
#include <bits/stdc++.h>
#define ull unsigned long long
using namespace std;
char s[5011],t[5011];
ull hs[5011],ht[5011],pw[5011];const ull B=801;
unordered_map<ull,int> mpt;
int n,m;
ull ans=0;
char str[5011];
int nxt[5011],cnt[5011];
void solve(int I,bool d=0)
{//printf("solve(%d)\n",I);
int pt=0;
for(int i=I+1;i<=n;++i)str[++pt]=s[i];
str[++pt]='#';
for(int i=1;i<=I;++i)str[++pt]=s[i];
// printf("str:%s\n",str+1);
nxt[0]=-1;nxt[1]=0;
for(int i=2;i<=n+1;++i)
{
int p=nxt[i-1];
while(~p&&str[p+1]!=str[i])p=nxt[p];
nxt[i]=p+1;
}
for(int i=1;i<=n+1;++i)cnt[i]=cnt[nxt[i]]+1;
// printf("nxt:");for(int i=1;i<=n+1;++i)printf("%d ",nxt[i]);putchar(10);
// printf("cnt:");for(int i=1;i<=n+1;++i)printf("%d ",cnt[i]);putchar(10);
for(int l=1;l<=I;++l)
{
int coe=cnt[n+1-(I-l+1)]-d;//printf("[%d,%d] coe:%d\n",l,I,coe);
if(coe)
{
ull H=hs[I]-hs[l-1]*pw[I-l+1];
if(mpt.find(H)!=mpt.end())ans+=1ll*coe*mpt[H];
}
// printf("after [%d,%d] ans:%llu\n",l,I,ans);
}
}
int main()
{
scanf("%s%s",s+1,t+1);
n=strlen(s+1),m=strlen(t+1);
// reverse(s+1,s+1+n);reverse(t+1,t+1+m);
for(int i=1;i<=n;++i)hs[i]=hs[i-1]*B+s[i];
for(int i=1;i<=m;++i)ht[i]=ht[i-1]*B+t[i];
pw[0]=1;for(int i=1;i<=5000;++i)pw[i]=pw[i-1]*B;
for(int l=1;l<=m;++l)
{
for(int r=l;r<=m;++r)++mpt[ht[r]-ht[l-1]*pw[r-l+1]];
}
for(int i=1;i<=n;++i)solve(i);
swap(s,t);swap(n,m);swap(hs,ht);
mpt.clear();
for(int l=1;l<=m;++l)
{
for(int r=l;r<=m;++r)++mpt[ht[r]-ht[l-1]*pw[r-l+1]];
}
for(int i=1;i<=n;++i)solve(i,1);
printf("%llu\n",ans);
fclose(stdin);fclose(stdout);return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3924kb
input:
abab ab
output:
8
result:
ok 1 number(s): "8"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3944kb
input:
abab abaaab
output:
29
result:
ok 1 number(s): "29"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3928kb
input:
abcd abcde
output:
10
result:
ok 1 number(s): "10"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3968kb
input:
aaba ba
output:
6
result:
ok 1 number(s): "6"
Test #5:
score: 0
Accepted
time: 1ms
memory: 3904kb
input:
babababaaabbaabababbbaabbbababbaaaaa aaaabbaababbab
output:
1161
result:
ok 1 number(s): "1161"
Test #6:
score: 0
Accepted
time: 568ms
memory: 4428kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
78156256250000
result:
ok 1 number(s): "78156256250000"
Test #7:
score: 0
Accepted
time: 82ms
memory: 13628kb
input:
gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...
output:
60716448
result:
ok 1 number(s): "60716448"
Test #8:
score: 0
Accepted
time: 89ms
memory: 13576kb
input:
mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...
output:
60679828
result:
ok 1 number(s): "60679828"
Test #9:
score: -100
Time Limit Exceeded
input:
vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...