题目链接:点击打开链接
题解思路:a[x]表示到x的最大连续长度,那么a[x]不就等于a[x-1]+1吗,这题要求连续递增就变得非常简单了.
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mx = 1e6+10;
int n,m,a[mx],b[mx],num[mx];
int main()
{
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
int x,y;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++){
scanf("%d",&x);
a[x] = a[x-1]+1;
}
for(int i=1;i<=m;i++){
scanf("%d",&y);
num[i] = y;
b[y] = b[y-1]+1;
}
int ans = 0;
for(int i=1;i<=m;i++) ans = max(ans,min(a[num[i]],b[num[i]]));
printf("%d\n",ans);
}
return 0;
}