QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#615263#7780. Dark LaTeX vs. Light LaTeX_Hugoi_#ML 262ms102416kbC++141.6kb2024-10-05 17:57:192024-10-05 17:57:19

Judging History

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

  • [2024-11-25 20:53:52]
  • hack成功,自动添加数据
  • (/hack/1258)
  • [2024-10-05 17:57:19]
  • 评测
  • 测评结果:ML
  • 用时:262ms
  • 内存:102416kb
  • [2024-10-05 17:57:19]
  • 提交

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;
		}
}
struct Node{
	int s[26];
	short Su;
}Tr[maxN];
int rt=1,Idx=1;
void Insert(char* s){
	int x=rt,Ln=strlen(s+1);
	for(int i=1;i<=Ln;i++){
		int c=s[i]-'a';
		if(!Tr[x].s[c])Tr[x].s[c]=++Idx;
		Tr[x=Tr[x].s[c]].Su++;
	}
}
void Journey(char* s,int *o){
	int x=rt,Ln=strlen(s+1);
	for(int i=1;i<=Ln;i++){
		int c=s[i]-'a';
		x=Tr[x].s[c];
		o[i]=Tr[x].Su;
	}
}
void Clear(){
	for(int i=1;i<=Idx;i++){
		for(int j=0;j<26;j++)
			Tr[i].s[j]=0;
		Tr[i].Su=0;
	}
	Idx=1,rt=1;
}
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;
			int L=min(r-l+1,A[l-1][r])-1;
			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: 1ms
memory: 5908kb

input:

abab
ab

output:

8

result:

ok 1 number(s): "8"

Test #2:

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

input:

abab
abaaab

output:

29

result:

ok 1 number(s): "29"

Test #3:

score: 0
Accepted
time: 1ms
memory: 5900kb

input:

abcd
abcde

output:

10

result:

ok 1 number(s): "10"

Test #4:

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

input:

aaba
ba

output:

6

result:

ok 1 number(s): "6"

Test #5:

score: 0
Accepted
time: 1ms
memory: 7940kb

input:

babababaaabbaabababbbaabbbababbaaaaa
aaaabbaababbab

output:

1161

result:

ok 1 number(s): "1161"

Test #6:

score: 0
Accepted
time: 262ms
memory: 102416kb

input:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

78156256250000

result:

ok 1 number(s): "78156256250000"

Test #7:

score: 0
Accepted
time: 21ms
memory: 48480kb

input:

gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...

output:

60716448

result:

ok 1 number(s): "60716448"

Test #8:

score: 0
Accepted
time: 24ms
memory: 50212kb

input:

mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...

output:

60679828

result:

ok 1 number(s): "60679828"

Test #9:

score: -100
Memory Limit Exceeded

input:

vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...

output:

2655796915

result: