C. Rotation Matching

 

 

 

 思路:可以看出,向左旋转和向右旋转都是一样的,因此在本题中,一律按向右旋转,记录数组a中的每一个元素到数组b中相应的元素需要向右移动几步,向右移动的步数中相同的最多的就是答案

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, a[N], b[N];
map<int, int> m;
int d[N], ans;
int vis[N];
int main(){
    cin >> n;
    for(int i=0;i<n;i++){
        cin >> a[i];
        m[a[i]] = i;
    }
    for(int i=0;i<n;i++){
        cin >> b[i];
        d[i] = (m[b[i]] - i + n) % n;
        vis[d[i]] ++;
        ans = max(ans, vis[d[i]]);
    }
    cout << ans << endl;
    return 0;
}

 

posted @ 2022-06-28 18:10  聊服一  阅读(55)  评论(0)    收藏  举报