QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#562007#8668. 回文路径hhiron0 74ms15080kbC++141.4kb2024-09-13 14:09:472024-09-13 14:09:48

Judging History

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

  • [2024-09-13 14:09:48]
  • 评测
  • 测评结果:0
  • 用时:74ms
  • 内存:15080kb
  • [2024-09-13 14:09:47]
  • 提交

answer

#include<bits/stdc++.h>
#define INF 0x7fffffff
typedef unsigned long long ull;
typedef long long ll;
using namespace std;
const int N=5e5+5;
int n;
ull has1l[N],has2l[N],has1r[N],has2r[N],po[N];
string a,b,s1,s2;
inline ull gethash(int x,int y,ull *has){
	return (has[y]-has[x]*po[abs(x-y)]);
}int ans=0;
void solve(){
	has1l[0]=s1[0]-'a',has2l[0]=s2[0]-'a';
	for(int i=1;i<=n+1;i++) has1l[i]=has1l[i-1]*31+s1[i]-'a';
	for(int i=n+1;i>=0;i--) has1r[i]=has1r[i+1]*31+s1[i]-'a';
	for(int i=1;i<=n+1;i++) has2l[i]=has2l[i-1]*31+s2[i]-'a';
	for(int i=n+1;i>=0;i--) has2r[i]=has2r[i+1]*31+s2[i]-'a';
	for(int i=1;i<=n;i++){
		int l=0,r=min(n,n-i)+1;
		while(r-l>1){
			int mid=(l+r)>>1;
			if(gethash(i-mid,i+mid,has1l)==gethash(i+mid,i-mid,has1r)) l=mid;
			else r=mid;
		}int lrc=(l*2+1)/2;
		int posl=i-l-1,posr=i+l-1;
		l=-1,r=min(posl,n-posr)+1;
		while(r-l>1){
			int mid=(l+r)>>1;
			if(gethash(posl,posl-mid,has1r)==gethash(posr,posr+mid,has2l)) l=mid;
			else r=mid;
		}ans=max(ans,lrc+1+l);
//		cout<<i<<" "<<s1[i]<<" "<<l<<endl;
	}
}
int main(){
	cin>>n>>a>>b;
	po[0]=1;
	for(int i=1;i<=n*4;i++) po[i]=po[i-1]*31;
	a=" "+a;
	b=" "+b;
	s1+='?',s2+='?';
	for(int i=1;i<=n;i++){
		s1+='#',s2+='#';
		s1+=a[i],s2+=b[i];
	}s1+='#',s2+='#',s1+='~',s2+='~';
	n=n*2+1;
	solve();
	swap(s1,s2);
	reverse(s1.begin(),s1.end()); reverse(s2.begin(),s2.end());
	solve();
	cout<<ans;
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 2ms
memory: 7764kb

input:

1000
mfmlkrasfiudkzrjzyrlbpitvzfrlmjdzsurtdcmnqpsyfgobbstvplqylvciloomaljyssxtrrccywyirfvlcnchwkfwbdaoxzpfpvlruptganojnfxmnlqetptmlmoyluxvaipghtlaszoozscdmjomobyzboqqmvqjpbfjsoczhkwrlcauzjceqikbaeuiqahnldpqmohfjfzgkbfdbqnoxispkejvpncwsyelebqumapgbfdrjvuaxaphnkciwzkruijmanwslkwosgyfhwbnsthhtxrhrzlgtt...

output:

10

result:

wrong answer 1st lines differ - expected: '6', found: '10'

Subtask #2:

score: 0
Wrong Answer

Test #11:

score: 0
Wrong Answer
time: 74ms
memory: 15080kb

input:

100000
ibhqhodaqcwqggmckoemulhkgbfidceskhefhsonccepfodalabaqgobpgcnaervbccadkbtsdigsoqochklocgbjjqcdhwrlacamprsoilyhiwkkjalicedhbxajrkhjgivjhnfdibkdwtexnnriegejazmohlfijbeigfmpngncokxhifjfuwuogccdfglfbxobnarmgfhgpnjjewicgfhcmfbbnjbbjjtbprnagpchcihcihfhcikeaecefdgeegtzlfdolhfieahiehdfcaflmndmcojceblf...

output:

11

result:

wrong answer 1st lines differ - expected: '9', found: '11'

Subtask #3:

score: 0
Skipped

Dependency #1:

0%