QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#627155 | #7780. Dark LaTeX vs. Light LaTeX | Ynoiynoi | TL | 1443ms | 216360kb | C++14 | 2.4kb | 2024-10-10 14:59:44 | 2024-10-10 14:59:45 |
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;
}
详细
Test #1:
score: 100
Accepted
time: 4ms
memory: 44824kb
input:
abab ab
output:
8
result:
ok 1 number(s): "8"
Test #2:
score: 0
Accepted
time: 8ms
memory: 44772kb
input:
abab abaaab
output:
29
result:
ok 1 number(s): "29"
Test #3:
score: 0
Accepted
time: 3ms
memory: 46948kb
input:
abcd abcde
output:
10
result:
ok 1 number(s): "10"
Test #4:
score: 0
Accepted
time: 4ms
memory: 44892kb
input:
aaba ba
output:
6
result:
ok 1 number(s): "6"
Test #5:
score: 0
Accepted
time: 0ms
memory: 44948kb
input:
babababaaabbaabababbbaabbbababbaaaaa aaaabbaababbab
output:
1161
result:
ok 1 number(s): "1161"
Test #6:
score: 0
Accepted
time: 461ms
memory: 113216kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
78156256250000
result:
ok 1 number(s): "78156256250000"
Test #7:
score: 0
Accepted
time: 34ms
memory: 69792kb
input:
gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...
output:
60716448
result:
ok 1 number(s): "60716448"
Test #8:
score: 0
Accepted
time: 36ms
memory: 69612kb
input:
mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...
output:
60679828
result:
ok 1 number(s): "60679828"
Test #9:
score: 0
Accepted
time: 1443ms
memory: 185216kb
input:
vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...
output:
2655796915
result:
ok 1 number(s): "2655796915"
Test #10:
score: 0
Accepted
time: 1323ms
memory: 206412kb
input:
ttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdtdttdttdtdttdttdtdttdtdttdttdtdttdttdt...
output:
2652657341
result:
ok 1 number(s): "2652657341"
Test #11:
score: 0
Accepted
time: 1384ms
memory: 216360kb
input:
uupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupupuupuupupuupuupupuupupuupuupupuupuupupuupu...
output:
2619083676
result:
ok 1 number(s): "2619083676"
Test #12:
score: 0
Accepted
time: 34ms
memory: 69532kb
input:
ggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxgxggxgxggxggxgxggxggxgxggxgxggxggxg...
output:
61227979
result:
ok 1 number(s): "61227979"
Test #13:
score: 0
Accepted
time: 413ms
memory: 129656kb
input:
cwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwcwwcwwcwcwwcwwcwcw...
output:
834307544
result:
ok 1 number(s): "834307544"
Test #14:
score: 0
Accepted
time: 1437ms
memory: 212428kb
input:
trtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtr...
output:
2663862697
result:
ok 1 number(s): "2663862697"
Test #15:
score: 0
Accepted
time: 20ms
memory: 65684kb
input:
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg...
output:
0
result:
ok 1 number(s): "0"
Test #16:
score: -100
Time Limit Exceeded
input:
igkkcgocckgoocioiiggcgkigoggkociciigokikkcogkoookkiioikockoigokigiiciikcokoockgiiiogicgkkgoiogcggcgckgikccgcckoocgggogiccgkgcoccckgiooiogckoioiioogiicogkckgiickooiockogkoikogkkociioigocoiioccggkigciigcckkggiccciiiggkcgggcokookogiokoccccgogkcigokkckccoccgkoogokogkcioockkikigokiikkkoikiigckkooioogioio...