QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#627158#7780. Dark LaTeX vs. Light LaTeXYnoiynoiTL 1359ms215880kbC++202.4kb2024-10-10 15:00:002024-10-10 15:00:00

Judging History

你现在查看的是最新测评结果

  • [2024-11-25 20:53:52]
  • hack成功,自动添加数据
  • (/hack/1258)
  • [2024-10-10 15:00:00]
  • 评测
  • 测评结果:TL
  • 用时:1359ms
  • 内存:215880kb
  • [2024-10-10 15:00:00]
  • 提交

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...

output:


result: