除了第3个样例其他全对,94pts求调教
查看原帖
除了第3个样例其他全对,94pts求调教
602632
_7Mr楼主2024/1/7 17:15
#include<bits/stdc++.h>
#define int long long
#define double long double
#define INF INT_MAX
using namespace std;
const int maxn=5e5+5;
int n,k,ans;
int a[maxn],b[maxn];
int s[maxn],sum1[maxn],sum2[maxn],flag[maxn]; 
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	cin>>n>>k;
	for(int i=1;i<=k;i++) cin>>a[i],flag[a[i]]=1,s[a[i]]=i;
	for(int i=1;i<=k;i++) cin>>b[i],flag[b[i]]=1;
	for(int i=1;i<=n;i++) ans+=(!flag[i]);
	for(int i=1;i<=k;i++){
		if(s[b[i]]!=0){
			if(s[b[i]]>=i) sum1[s[b[i]]-i]++;
			else sum1[s[b[i]]+k-i]++;
		}
		if(s[b[k-i+1]]!=0){
			if(s[b[k-i+1]]>=i) sum2[s[b[k-i+1]]-i]++;
			else sum2[s[b[k-i+1]]+k-i]++;
		}
	}
	int mx=-INF;
	for(int i=1;i<=k;i++) mx=max(mx,max(sum1[i],sum2[i]));
	cout<<ans+mx<<endl;
	return 0;
}

2024/1/7 17:15
加载中...