解题思路:
由于第二个数组所有数字是同时向一个方向移动的,求移动后最大匹配项的数目,即可以转化为求原始数组中处在同一偏移量的数字个数的最大值,偏移量就等于b数组中某个数组与a数组中相同数字之间的绝对距离
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
int a[maxn],b[maxn],c[maxn],ans;
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i) {
int temp;
scanf("%d", &temp);
a[temp]=i;
}
for(int i=1;i<=n;++i)
{
scanf("%d",&b[i]);
int offset=i-a[b[i]];
if(offset<0) offset+=n;
c[offset]++;
}
for(int i=0;i<n;++i)
ans=max(ans,c[i]);
printf("%d\n",ans);
return 0;
}