QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#302166#7780. Dark LaTeX vs. Light LaTeXzzuqy#TL 888ms138212kbC++142.5kb2024-01-10 17:05:472024-01-10 17:05:50

Judging History

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

  • [2024-11-25 20:53:52]
  • hack成功,自动添加数据
  • (/hack/1258)
  • [2024-01-10 17:05:50]
  • 评测
  • 测评结果:TL
  • 用时:888ms
  • 内存:138212kb
  • [2024-01-10 17:05:47]
  • 提交

answer

#include <iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iomanip>
#include<algorithm>
#include<deque>
#include<unordered_map>
#include<map>
#define P 31525197391593473ll
#define ll long long
#define l(p) t[p].l
#define sum(p) t[p].sum
#define cnt(p) t[p].cnt
#define r(p) t[p].r
#define mod 998244353
#define sc(A) scanf("%d",&A)
#define rep(A,B,C) for(int C=A;C<=B;++C)
#define fep(A,B,C) for(int C=A;C>=B;--C)
#define put(x) printf("%d\n",x)
#define db double
using namespace std;
const int MAXN=5010;
int n,m,q,x,maxx=62,top;

char a[MAXN],b[MAXN];
int nex[MAXN];
int w[MAXN];
int c1[MAXN][MAXN];
int c2[MAXN][MAXN];
unordered_map<ll,int>H;
unordered_map<ll,int>H1;
//unordered_map<unsigned ll,int>H;
//unordered_map<unsigned ll,int>H1;
//map<pair<unsigned ll,int>,int>H;
//map<pair<unsigned ll,int>,int>H1;

signed main() 
{
	//freopen("1.in","r",stdin);
	scanf("%s",a+1);
	scanf("%s",b+1);
	int n=strlen(a+1);
	int m=strlen(b+1);
	rep(1,n,i)
	{
		int base1=29;
		int base2=114514;
		unsigned ll s2=0;
		ll s1=0;
		rep(i,n,j)
		{
			s1=((ll)s1*base1+a[j])%P;
			//s2=s2*base2+a[j];
			++H[s1];
			//++H[make_pair(s2,s1)];
			
		}
	}

	ll ans=0;
	rep(1,m,i)
	{
		int base1=29;
		int base2=114514;
		unsigned ll s2=0;
		ll s1=0;
		rep(i,m,j)
		{
			s1=((ll)s1*base1+b[j])%P;
			//s2=s2*base2+b[j];
			ans+=H[s1];
			c2[i][j]=H[s1];
			++H1[s1];
			//ans+=H[make_pair(s2,s1)];
			//c2[i][j]=H[make_pair(s2,s1)];
			//++H1[make_pair(s2,s1)];
		}
	}

	rep(1,n,i)
	{
		int base1=29;
		int base2=114514;
		unsigned ll s2=0;
		ll s1=0;
		rep(i,n,j)
		{
			s1=((ll)s1*base1+a[j])%P;
			//s2=s2*base2+a[j];
			//c1[i][j]=H1[make_pair(s2,s1)];
			c1[i][j]=H1[s1];
		}
	}
	


	rep(2,n,j)
	{
		int now=j;
		w[j+1]=1;
		w[j]=0;
		nex[j+1]=j;
		rep(j+2,n,i)
		{
			while(now!=j&&a[i]!=a[now+1])now=nex[now];
			if(a[i]==a[now+1])++now;
			nex[i]=now;
			w[i]=w[now]+1;
		}
		now=j;
		rep(1,j-1,i)
		{
			while(now!=j&&a[i]!=a[now+1])now=nex[now];
			if(a[i]==a[now+1])++now;
			ans+=(ll)w[now]*c1[i+1][j];
		}
	}

	rep(2,m,j)
	{
		int now=j;
		w[j+1]=1;
		w[j]=0;
		nex[j+1]=j;
		rep(j+2,m,i)
		{
			while(now!=j&&b[i]!=b[now+1])now=nex[now];
			if(b[i]==b[now+1])++now;
			nex[i]=now;
			w[i]=w[now]+1;
		}
		now=j;
		rep(1,j-1,i)
		{
			while(now!=j&&b[i]!=b[now+1])now=nex[now];
			if(b[i]==b[now+1])++now;
			ans+=(ll)w[now]*c2[i+1][j];
		}
	}

	printf("%lld\n",ans);
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 5752kb

input:

abab
ab

output:

8

result:

ok 1 number(s): "8"

Test #2:

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

input:

abab
abaaab

output:

29

result:

ok 1 number(s): "29"

Test #3:

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

input:

abcd
abcde

output:

10

result:

ok 1 number(s): "10"

Test #4:

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

input:

aaba
ba

output:

6

result:

ok 1 number(s): "6"

Test #5:

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

input:

babababaaabbaabababbbaabbbababbaaaaa
aaaabbaababbab

output:

1161

result:

ok 1 number(s): "1161"

Test #6:

score: 0
Accepted
time: 888ms
memory: 138212kb

input:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

78156256250000

result:

ok 1 number(s): "78156256250000"

Test #7:

score: 0
Accepted
time: 148ms
memory: 61760kb

input:

gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...

output:

60716448

result:

ok 1 number(s): "60716448"

Test #8:

score: 0
Accepted
time: 161ms
memory: 62132kb

input:

mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...

output:

60679828

result:

ok 1 number(s): "60679828"

Test #9:

score: -100
Time Limit Exceeded

input:

vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...

output:


result: