记录编号 389423 评测结果 AAAAAAAAAAAAAAA
题目名称 [HZOI 2016] 最长公共上升子序列 最终得分 100
用户昵称 Gravatarswttc 是否通过 通过
代码语言 C++ 运行时间 0.049 s
提交时间 2017-03-31 15:06:46 内存使用 4.94 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int ff[1100],f[1100][1100],m,n,maxn,a[1100],b[1100];
int main()
{
	freopen("lcis.in","r",stdin);
	freopen("lcis.out","w",stdout);
	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]);
	for(int i=1;i<=n;i++)
	 for(int j=1;j<=m;j++)
	 {
	 	if(a[i]==b[j])
	 	{
	 		maxn=0;
	 		for(int k=1;k<=j;k++)
	 		 {
	 		 	if(b[j]>b[k]) maxn=max(maxn,ff[k]);
			  }
	 		ff[j]=maxn+1;
	 		f[i][j]=ff[j];
		 }
		else f[i][j]=max(f[i-1][j],f[i][j-1]); 
	 }
	printf("%d",f[n][m]);
	return 0;
}