HDU1423 - Greatest Common Increasing Subsequence - 最长公共上升子序列模版题
注意一下控制格式即可,最长公共上升子序列模版题
AC代码
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<string.h>
using namespace std;
int a[520],b[520],dp[520];
int main()
{
int tt,p,q;
scanf("%d",&tt);
while(tt--)
{
memset(dp,0,sizeof(dp));
scanf("%d",&p);
for(int i=0;i<p;i++)
scanf("%d",&a[i]);
scanf("%d",&q);
for(int i=0;i<q;i++)
scanf("%d",&b[i]);
int maxx;
for(int i=0;i<p;i++)
{
maxx=0;
for(int j=0;j<q;j++)
{
if(a[i]>b[j])
maxx=max(dp[j],maxx);
else if(a[i]==b[j])
dp[j]=maxx+1;
}
}
int ans=0;
for(int i=0;i<q;i++)
ans=max(ans,dp[i]);
if(tt)
printf("%d\n\n",ans);
else
printf("%d\n",ans);
}
return 0;
}