QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#627158 | #7780. Dark LaTeX vs. Light LaTeX | Ynoiynoi | TL | 1359ms | 215880kb | C++20 | 2.4kb | 2024-10-10 15:00:00 | 2024-10-10 15:00:00 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define MAXN 5005
#define mo1 10260817
#define mo2 998244353
#pragma GCC optimize(3)
//#pragma GCC optimize("Ofast")
#define int long long
const int o1 = 2333;
const int o2 = 1999;
int n,m;
char s[MAXN],t[MAXN];
struct aa {
signed y,w,ls;
}b[20000000];
int CNT = 0;
int nn;
signed d[mo1+3];
//vector<aa>p[mo1+3];
#define pb push_back
void ins(int x,int y,int w) {
for(int j = d[x]; j != 0; j = b[j].ls) {
if(b[j].y == y) {
b[j].w += w;
return;
}
}
nn ++;
b[nn] = {y,w,d[x]};
d[x] = nn;
}
int find(int x,int y) {
for(int j = d[x]; j != 0; j = b[j].ls) {
if(b[j].y == y) return b[j].w;
}
return 0;
}
signed g[MAXN][MAXN];
long long an = 0;
int sg[MAXN],t1;
int kmp[MAXN],z[MAXN];
void qwq(char *s,char *t,int k) {
n = strlen(s+1);
m = strlen(t+1);
memset(d,0,sizeof(d));
nn = 0;
for(int i = 1; i <= m; i ++) {
int s1 = 0,s2 = 0;
for(int j = i; j <= m; j ++) {
s1 = (s1*o1+t[j])%mo1;
s2 = (s2*o2+t[j])%mo2;
ins(s1,s2,1);
}
}
//cout<<clock()-t1<<"\n";
for(int i = 1; i <= n; i ++) {
int s1 = 0,s2 = 0;
for(int j = i; j <= n; j ++) {
s1 = (s1*o1+s[j])%mo1;
s2 = (s2*o2+s[j])%mo2;
g[i][j] = find(s1,s2);
// cout<<i<<" "<<j<<" "<<s1<<" "<<s2<<" "<<g[i][j]<<"??\n";
if(k == 1) an += g[i][j];
}
}
// cout<<an<<" "<<clock()-t1<<" "<<CNT<<"\n";
//int cnt = 0;
for(int j = 1;j <= n; j ++) {
memset(kmp,0,sizeof(kmp));
kmp[j-1] = kmp[j] = j-1;
int tt = j-1;
memset(z,0,sizeof(z));
z[j] = 1;
// cout<<j<<"-----\n";
for(int i = j+1; i <= n; i ++) {
while(tt > j-1 && s[i] != s[tt+1]) {
tt = kmp[tt];
// cout<<tt<<"\n";
// cnt ++;
}
if(s[i] == s[tt+1]) tt ++;
kmp[i] = tt;
z[i] = z[kmp[i]]+1;
// cout<<i<<" "<<kmp[i]<<"?\n";
}
tt = j-1;
for(int i = 1; i < j; i ++) {
while(tt > j-1 && s[i] != s[tt+1]) {
tt = kmp[tt];
// cnt ++;
}
if(s[i] == s[tt+1]) tt ++;
an += g[i+1][j-1]*z[tt];
//cout<<i<<" "<<j-1<<" "<<g[i+1][j-1]<<" "<<tt<<" "<<z[tt]<<"\n";
// cout<<i<<" "<<tt<<" "<<l<<"?\n";
// an += sg[i]-sg[i-l];
}
// cout<<cnt<<"\n";
}
// cout<<an<<"\n";
}
signed main() {
scanf("%s",s+1);
scanf("%s",t+1);
/*t1 = clock();
for(int i = 1; i <= 5000;i ++) {
s[i] = 'a'+rand()%2;
t[i] = 'a'+rand()%2;
}*/
qwq(s,t,1);
qwq(t,s,2);
cout<<an;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 4ms
memory: 44900kb
input:
abab ab
output:
8
result:
ok 1 number(s): "8"
Test #2:
score: 0
Accepted
time: 0ms
memory: 46944kb
input:
abab abaaab
output:
29
result:
ok 1 number(s): "29"
Test #3:
score: 0
Accepted
time: 13ms
memory: 46756kb
input:
abcd abcde
output:
10
result:
ok 1 number(s): "10"
Test #4:
score: 0
Accepted
time: 3ms
memory: 46936kb
input:
aaba ba
output:
6
result:
ok 1 number(s): "6"
Test #5:
score: 0
Accepted
time: 0ms
memory: 49044kb
input:
babababaaabbaabababbbaabbbababbaaaaa aaaabbaababbab
output:
1161
result:
ok 1 number(s): "1161"
Test #6:
score: 0
Accepted
time: 378ms
memory: 143316kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
78156256250000
result:
ok 1 number(s): "78156256250000"
Test #7:
score: 0
Accepted
time: 35ms
memory: 69824kb
input:
gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...
output:
60716448
result:
ok 1 number(s): "60716448"
Test #8:
score: 0
Accepted
time: 35ms
memory: 69436kb
input:
mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...
output:
60679828
result:
ok 1 number(s): "60679828"
Test #9:
score: 0
Accepted
time: 1359ms
memory: 215052kb
input:
vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...
output:
2655796915
result:
ok 1 number(s): "2655796915"
Test #10:
score: 0
Accepted
time: 1340ms
memory: 215584kb
input:
ttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdt...
output:
2652657341
result:
ok 1 number(s): "2652657341"
Test #11:
score: 0
Accepted
time: 1330ms
memory: 215880kb
input:
uupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupu...
output:
2619083676
result:
ok 1 number(s): "2619083676"
Test #12:
score: 0
Accepted
time: 30ms
memory: 69864kb
input:
ggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxg...
output:
61227979
result:
ok 1 number(s): "61227979"
Test #13:
score: 0
Accepted
time: 354ms
memory: 129072kb
input:
cwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcw...
output:
834307544
result:
ok 1 number(s): "834307544"
Test #14:
score: 0
Accepted
time: 1312ms
memory: 212984kb
input:
trtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtr...
output:
2663862697
result:
ok 1 number(s): "2663862697"
Test #15:
score: 0
Accepted
time: 23ms
memory: 63908kb
input:
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg...
output:
0
result:
ok 1 number(s): "0"
Test #16:
score: -100
Time Limit Exceeded
input:
igkkcgocckgoocioiiggcgkigoggkociciigokikkcogkoookkiioikockoigokigiiciikcokoockgiiiogicgkkgoiogcggcgckgikccgcckoocgggogiccgkgcoccckgiooiogckoioiioogiicogkckgiickooiockogkoikogkkociioigocoiioccggkigciigcckkggiccciiiggkcgggcokookogiokoccccgogkcigokkckccoccgkoogokogkcioockkikigokiikkkoikiigckkooioogioio...