QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#317993#7780. Dark LaTeX vs. Light LaTeXucup_team_qiuly#ML 0ms0kbC++141.5kb2024-01-30 10:01:372024-01-30 10:01:37

Judging History

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

  • [2024-11-25 20:53:52]
  • hack成功,自动添加数据
  • (/hack/1258)
  • [2024-01-30 10:01:37]
  • 评测
  • 测评结果:ML
  • 用时:0ms
  • 内存:0kb
  • [2024-01-30 10:01:37]
  • 提交

answer

#include <iostream>
#include <cstdio>
#include <cstring>
#define int long long
using namespace std;
int n,m;
int qwq[5005][5005],f[5005][5005],g[5005][5005];
char s[5005],t[5005];
int ans;
signed main(){
	scanf("%s%s",s+1,t+1);
	n=strlen(s+1);
	m=strlen(t+1);
	for (int i=n;i>=1;i--)
		for (int j=m;j>=1;j--)
			if (s[i]==t[j])qwq[i][j]=1+qwq[i+1][j+1],ans+=qwq[i][j];
	memset(f,0,sizeof(f));
	memset(g,0,sizeof(g));
	for (int i=1;i<=n;i++)
		for (int j=1;j<=n;j++)
			if (s[i]==s[j])f[i][j]=1+f[i-1][j-1];
	for (int x=1;x<=n;x++)
		for (int y=x+2;y<=n;y++){
			int l=max(x+1,y-f[x][y]),r=y-1;
			g[x+1][l]++,g[x+1][r+1]--;
		}
	for (int i=1;i<=n;i++){
		for (int j=1;j<=n;j++)g[i][j]+=g[i][j-1];
		for (int j=1;j<=n;j++)g[i][j]+=g[i][j-1];
	}
	for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++)
			ans+=g[i][i+qwq[i][j]-1]; 
	swap(s,t);
	swap(n,m);
	memset(qwq,0,sizeof(qwq));
	for (int i=n;i>=1;i--)
		for (int j=m;j>=1;j--)
			if (s[i]==t[j])qwq[i][j]=1+qwq[i+1][j+1];
	memset(f,0,sizeof(f));
	memset(g,0,sizeof(g));
	for (int i=1;i<=n;i++)
		for (int j=1;j<=n;j++)
			if (s[i]==s[j])f[i][j]=1+f[i-1][j-1];
	for (int x=1;x<=n;x++)
		for (int y=x+2;y<=n;y++){
			int l=max(x+1,y-f[x][y]),r=y-1;
			g[x+1][l]++,g[x+1][r+1]--;
		}
	for (int i=1;i<=n;i++){
		for (int j=1;j<=n;j++)g[i][j]+=g[i][j-1];
		for (int j=1;j<=n;j++)g[i][j]+=g[i][j-1];
	}
	for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++)
			ans+=g[i][i+qwq[i][j]-1]; 
	cout<<ans<<endl;
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Memory Limit Exceeded

input:

abab
ab

output:

8

result: