QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#279917#7780. Dark LaTeX vs. Light LaTeXucup-team2279#ML 175ms199056kbC++141.5kb2023-12-09 11:53:242023-12-09 11:53:24

Judging History

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

  • [2024-11-25 20:53:52]
  • hack成功,自动添加数据
  • (/hack/1258)
  • [2023-12-09 11:53:24]
  • 评测
  • 测评结果:ML
  • 用时:175ms
  • 内存:199056kb
  • [2023-12-09 11:53:24]
  • 提交

answer

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/hash_policy.hpp>
using namespace std;
using ull=unsigned long long;
const int N=5005,b=229;
ull p[N];
struct sb{
	int n,ht[N],sa[N*2],rk[N*2],t[N*2],c[N][N];
	char s[N*2];
	ull h[N];
	__gnu_pbds::gp_hash_table<ull,int> mp;
	ull val(int l,int r) {return h[r]-h[l-1]*p[r-l+1];}
	void init(){
		scanf("%s",s+1);
		n=strlen(s+1);
		for(int i=1;i<=n;i++) h[i]=h[i-1]*b+s[i],sa[i]=i,rk[i]=s[i];
		for(int w=1;w<n;w<<=1){
			sort(sa+1,sa+n+1,[&](int x,int y){
				return rk[x]==rk[y]?rk[x+w]<rk[y+w]:rk[x]<rk[y];
			});
			memcpy(t,rk,sizeof rk);
			for(int i=1,k=0;i<=n;i++)
				if(t[sa[i]]==t[sa[i-1]]&&t[sa[i]+w]==t[sa[i-1]+w]) rk[sa[i]]=k;
				else rk[sa[i]]=++k;
		}
		for(int i=1,k=0;i<=n;i++){
			if(k) k--;
			while(s[i+k]==s[sa[rk[i]-1]+k]) k++;
			ht[rk[i]]=k;
		}
		for(int i=1;i<n;i++){
			int mi=n;
			for(int j=i+1;j<=n;j++){
				mi=min(mi,ht[j]);
				int x=sa[i],y=sa[j];
				if(x>y) swap(x,y);
				c[--y][x]++;c[y][x+mi+1]--;
			}
		}
		c[n][1]=1;
		for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) c[i][j]+=c[i][j-1];
		for(int i=1;i<=n;i++) for(int j=i;j<=n;j++) mp[val(i,j)]++;
	}
	int ask(ull x) {return mp[x];}
}A,B;
int main(){
	for(int i=p[0]=1;i<N;i++) p[i]=p[i-1]*b;
	A.init();B.init();
	long long ans=0;
	for(int i=1;i<=A.n;i++) for(int j=1;j<=i;j++) ans+=A.c[i][j]*B.ask(A.val(j,i));
	for(int i=1;i<=B.n;i++) for(int j=1;j<=i;j++) ans+=(B.c[i][j]-1)*A.ask(B.val(j,i));
	cout<<ans;
	return 0;
}

詳細信息

Test #1:

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

input:

abab
ab

output:

8

result:

ok 1 number(s): "8"

Test #2:

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

input:

abab
abaaab

output:

29

result:

ok 1 number(s): "29"

Test #3:

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

input:

abcd
abcde

output:

10

result:

ok 1 number(s): "10"

Test #4:

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

input:

aaba
ba

output:

6

result:

ok 1 number(s): "6"

Test #5:

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

input:

babababaaabbaabababbbaabbbababbaaaaa
aaaabbaababbab

output:

1161

result:

ok 1 number(s): "1161"

Test #6:

score: 0
Accepted
time: 175ms
memory: 199056kb

input:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

78156256250000

result:

ok 1 number(s): "78156256250000"

Test #7:

score: 0
Accepted
time: 56ms
memory: 105984kb

input:

gzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggzggzgzggzggzgzggzgzggz...

output:

60716448

result:

ok 1 number(s): "60716448"

Test #8:

score: 0
Accepted
time: 57ms
memory: 106408kb

input:

mlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllmllmlmllmllmlmllmlmllmllmlmllmlmllml...

output:

60679828

result:

ok 1 number(s): "60679828"

Test #9:

score: -100
Memory Limit Exceeded

input:

vbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvbbvbvbbvbbvbvbbvbvbbvb...

output:

2655796915

result: