记录编号 247812 评测结果 AAAAAAAAAA
题目名称 神秘的咒语 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 1.324 s
提交时间 2016-04-09 19:53:37 内存使用 4.15 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
const int maxn=1005;
int a[maxn],b[maxn];
int f[maxn][maxn];
int max(int a,int b){
	return a>b?a:b;
}
int main(){
	freopen("codes.in","r",stdin);
	freopen("codes.out","w",stdout);
	int t;scanf("%d",&t);
	while(t--){
		memset(f,0,sizeof(f));
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		int n,m;
		scanf("%d",&n);
		for(int i=1;i<=n;++i)scanf("%d",a+i);
		scanf("%d",&m);
		for(int i=1;i<=m;++i)scanf("%d",b+i);
		int ans=0;
		for(int i=1;i<=n;++i){
			for(int j=1;j<=m;++j){
				if(a[i]==b[j])
				for(int k=0;k<j;++k){
					if(k==0||b[k]<b[j])f[i][j]=max(f[i-1][k]+1,f[i][j]);
				}
				else{
					f[i][j]=f[i-1][j];
				}
				
				ans=max(ans,f[i][j]);
			}
		}
		printf("%d\n",ans);
	}
	fclose(stdin);fclose(stdout);
	return 0;
}