QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#615307#7780. Dark LaTeX vs. Light LaTeX_Hugoi_#TL 764ms101824kbC++141.4kb2024-10-05 18:03:572024-10-05 18:03:59

Judging History

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

  • [2024-11-25 20:53:52]
  • hack成功,自动添加数据
  • (/hack/1258)
  • [2024-10-05 18:03:59]
  • 评测
  • 测评结果:TL
  • 用时:764ms
  • 内存:101824kb
  • [2024-10-05 18:03:57]
  • 提交

answer

#include"bits/stdc++.h"
using namespace std;
const int maxn = 5010;
const int maxN = 12500010;
int n,m;
char a[maxn],b[maxn];
int A[maxn][maxn];
void GetLcp(char* a,char* b,int Ta,int Tb){
	for(int i=Ta;i>=1;i--)
		for(int j=Tb;j>=1;j--){
			if(a[i]==b[j])A[i][j]=A[i+1][j+1]+1;
			else A[i][j]=0;
		}
}
void GetLcs(char* a,char* b,int Ta,int Tb){
	for(int i=1;i<=Ta;i++)
		for(int j=1;j<=Tb;j++){
			if(a[i]==b[j])A[i][j]=A[i-1][j-1]+1;
			else A[i][j]=0;
		}
}
#define L long long
#define XI __int128
const L mo = 1926081719491001071ll;
unordered_map<L,int>Mp;
void Insert(char* s){
	int Ln=strlen(s+1);
	XI Hs=0;
	for(int i=1;i<=Ln;i++){
		Hs=(Hs*2+s[i]-'a'+1)%mo;
		Mp[Hs]++;
	}
}
void Journey(char* s,int *o){
	int Ln=strlen(s+1);
	XI Hs=0;
	for(int i=1;i<=Ln;i++){
		Hs=(Hs*2+s[i]-'a'+1)%mo;
		o[i]=Mp[Hs];
	}
}
void Clear(){
	Mp.clear();
}
int s[maxn];
long long Ans=0;
void Solve(){
	GetLcs(a,a,n,n);
	for(int j=1;j<=m;j++)
		Insert(b+j-1);
	for(int l=2;l<=n;l++){
		Journey(a+l-1,s);
		for(int i=1;i<=n;i++)
			s[i]=s[i]+s[i-1];
		for(int r=l;r<=n;r++){
			if(!A[l-1][r])continue;
			if(min(r-l+1,A[l-1][r])==r-l+1)Ans+=s[r-l];
			else Ans+=s[r-l]-s[r-l-A[l-1][r]];
		}
	}
	Clear();
}
int main(){
	scanf("%s%s",a+1,b+1);
	n=strlen(a+1),m=strlen(b+1);
	GetLcp(a,b,n,m);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			Ans+=A[i][j];
	Solve();
	swap(a,b),swap(n,m);
	Solve();
	cout<<Ans<<endl;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3940kb

input:

abab
ab

output:

8

result:

ok 1 number(s): "8"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3720kb

input:

abab
abaaab

output:

29

result:

ok 1 number(s): "29"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3940kb

input:

abcd
abcde

output:

10

result:

ok 1 number(s): "10"

Test #4:

score: 0
Accepted
time: 0ms
memory: 3732kb

input:

aaba
ba

output:

6

result:

ok 1 number(s): "6"

Test #5:

score: 0
Accepted
time: 0ms
memory: 3892kb

input:

babababaaabbaabababbbaabbbababbaaaaa
aaaabbaababbab

output:

1161

result:

ok 1 number(s): "1161"

Test #6:

score: 0
Accepted
time: 764ms
memory: 101824kb

input:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

78156256250000

result:

ok 1 number(s): "78156256250000"

Test #7:

score: 0
Accepted
time: 119ms
memory: 35168kb

input:

gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...

output:

60716448

result:

ok 1 number(s): "60716448"

Test #8:

score: 0
Accepted
time: 123ms
memory: 37448kb

input:

mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...

output:

60679828

result:

ok 1 number(s): "60679828"

Test #9:

score: -100
Time Limit Exceeded

input:

vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...

output:


result: