比赛 |
动态规划练习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(){;}