- 神秘的咒语
- 2017-08-07 12:42:56 @
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n;
int dp[504];
int a[504];
int b[504];
int p[504];
int a1,b1;
int ans,t;
void init(){
scanf("%d",&a1);
for(int i=1;i<=a1;i++)
scanf("%d",&a[i]);
scanf("%d",&b1);
for(int i=1;i<=b1;i++)
scanf("%d",&b[i]);
return ;
}
void work(){
ans=0;
memset(p,0,sizeof(p));
memset(dp,0,sizeof(dp));
for(int i=1;i<=a1;i++){
t=0;
for(int j=1;j<=b1;j++){
if(a[i]==b[j]){
for(int k=i-1;k>0;k--){
if(a[k]<a[i] && p[k] && p[k]<j){
dp[i]=max(dp[i],dp[k]+1);
}
}
if(dp[i]==0) dp[i]=1;
if(dp[i]>t){
t=dp[i];
p[i]=j;
}
}
}
ans=max(ans,dp[i]);
}
printf("%d\n",ans);
return ;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
init();
work();
}
}
0 条评论
目前还没有评论...