题意
给两个数组,元素是 1~n ,可以将序列左右移动(环),使对应位置元素相同最大,求最大的数量。
思路
算两个数组中相同元素的相差多少位,位数相同的就可以匹配到。记录一个cnt,找到最大值。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 200010;
int a[N], idx[N];
int d[N];
void solve()
{
int n,x;
cin >> n;
memset(d,0,sizeof d);
for(int i=1;i<=n;i++)
{
int x;
cin >>x;
idx[x] = i;
}
int ans = 0;
for(int i=1; i<=n; i++)
{
int x;
cin >>x;
d[(idx[x] - i + n)%n] ++ ;
}
for(int i=0;i<n;i++)ans = max(d[i], ans);
cout << ans << endl;
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t;
// cin >>t;
// while(t--)
solve();
}