QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#354549#7780. Dark LaTeX vs. Light LaTeXFlamire#TL 568ms13628kbC++171.6kb2024-03-15 16:21:142024-03-15 16:21:15

Judging History

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

  • [2024-11-25 20:53:52]
  • hack成功,自动添加数据
  • (/hack/1258)
  • [2024-03-15 16:21:15]
  • 评测
  • 测评结果:TL
  • 用时:568ms
  • 内存:13628kb
  • [2024-03-15 16:21:14]
  • 提交

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

output:


result: