WA on #10
查看原帖
WA on #10
1045168
NSZBD_dklmq12楼主2024/8/12 19:24

直角,记录

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,a[2001000],hash1[2001000],hash2[2001000],bei[2001000],mod=998244353,hit=1e7+7,ans,sum,anss[2001000],sl,sr,some;
int main(){
	cin>>n;
	ans=1;
	for(int i=1;i<=n;i++) cin>>a[i];
	bei[0]=1;
	for(int i=1;i<=n;i++) bei[i]=bei[i-1]*hit%mod;
	for(int i=1;i<=n;i++) hash1[i]=(hash1[i-1]*hit+a[i])%mod;
	for(int i=n;i>=1;i--) hash2[i]=(hash2[i+1]*hit+a[i])%mod;
	for(int i=1;i<=n;i++){
		unordered_map<ll,bool>mp;
		some=0;
		for(int k=1;k<=n/i;k++){
			ll has1=(hash1[k*i]+mod-hash1[(k-1)*i]*bei[i]%mod)%mod;
			ll has2=(hash2[(k-1)*i+1]+mod-hash2[k*i+1]*bei[i]%mod)%mod;
			if(mp[has1]&&mp[has2]) continue;
			some++;
			mp[has1]=true;
			mp[has2]=true;
		}
		if(some>ans) ans=some,sl=sr=sr+1,anss[sl]=i;
		else if(some==ans) anss[++sr]=i;
	}
	cout<<ans<<' '<<sr-sl+1<<endl;
	for(int i=sl;i<=sr;i++) cout<<anss[i]<<' ';
	return 0;
}
2024/8/12 19:24
加载中...