记录编号 244934 评测结果 AAAAAAAAAAAAAAA
题目名称 [HZOI 2016] 最长公共上升子序列 最终得分 100
用户昵称 GravatarLOSER 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-04-02 09:14:12 内存使用 0.00 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#define max(a,b) a>b?a:b
using namespace std;
const int maxn=1001;
int len1=0,len2=0,a[maxn]={0},b[maxn]={0},f[maxn][maxn]={0};
int read(){
	int x;char ch;
	while(ch=getchar(),ch>'9',ch<'0');x=ch-'0';
	while(ch=getchar(),ch<='9'&&ch>='0')x=x*10+ch-'0';
	return x;
}
void Init(){
	len1=read();
	for(int i=1;i<=len1;i++)a[i]=read();
	len2=read();
	for(int i=1;i<=len2;i++)b[i]=read();
}
int MY(){
	freopen("lcis.in","r",stdin);
	freopen("lcis.out","w",stdout);
	Init();
	int minn=0;
	for(int i=1;i<=len1;i++){
		for(int j=1;j<=len2;j++){
			if(a[i]!=b[j])f[i][j]=f[i-1][j];
			if(a[i]==b[j]){
				int temp=0;
				for(int k=1;k<j;k++){
					if(b[j]>b[k]&&f[i-1][k]>temp)temp=f[i-1][k];
				}
				f[i][j]=temp+1;
			}
			if(f[i][j]>minn)minn=f[i][j];		
		}
	}
	printf("%d\n",minn);
	return 0;
}
int YOU=MY();
int main(){;}