涉及知识点:
solution:
- 首先我们通过题面,可以得到一个条件:
-
-
- -这个匹配最多通过题意可以知道就是向左或者向右移动k次后的结果
-
- -那么如何找这个移动方式呢?
-
- -从向左向右移动入手,我们发现只要用当前bi的下标减去ai的下标+n%n即可(用绝对值的话,要考虑大于n的情况比较繁琐)
std:
#include <cstdio>
#include <algorithm>
#include<iomanip>
#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <set>
#include <queue>
#include <cstring>
#include<stack>
#include <cassert>
#include<map>
using namespace std;
typedef long long LL;
LL n, k, m ;
LL i,j,g;
vector<int >v[N],num[N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int t;
cin>>t;
for(int i= 1;i<=t;i++)cin >>ar[i],v[ar[i]].push_back(i);
for(int i= 1;i<=t;i++){
cin >>br[i];
cr[(i-v[br[i]][0]+t)%t]++;
}
LL ma = 0 ;
for(int i= 0;i<=t-1;i++){
ma =max(ma, cr[i]);
}
cout<<ma<<endl;
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步