比赛 动态规划练习2 评测结果 AAAAAAAAAAAAAAA
题目名称 最长公共上升子序列 最终得分 100
用户昵称 YGOI_真神名曰驴蛋蛋 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2017-03-28 18:03:09
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<queue>
#define MAXN 1010
#define then {
#define end }
using namespace std;
static int f[MAXN];
static int a[MAXN],b[MAXN];
static int i,j,k,n1,n2;
static int ans=0;
static char c;
inline void read(int &k){k=0;
	do{c=getchar();}while(c<'0'||c>'9');
	do{k=k*10+c-'0';c=getchar();}while(c>='0'&&c<='9');
}
static int doing(){
	read(n1);
	for(i=1;i<=n1;++i)read(a[i]);
	read(n2);
	for(i=1;i<=n2;++i)read(b[i]);
	for(i=1;i<=n1;++i)then
		k=0;
		for(j=1;j<=n2;++j)then
			if(a[i]==b[j])f[j]=k+1;
			else if(a[i]>b[j])if(k<f[j])k=f[j];
		end
	end
	for(i=1;i<=n2;++i)then
		if(ans<f[i])ans=f[i];
	end
	printf("%d",ans);
}
static void *_=freopen("lcis.in","r",stdin);
static void *__=freopen("lcis.out","w",stdout);
static int A_long_name_with_no_mean_but_reason_for_ugly=doing();
int main(){;}