using namespace std;
#define Maxn 65000
int ha[Maxn];
int a[Maxn],b[Maxn];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int t,n,p,q;
scanf("%d",&t);
for(int ca=1;ca<=t;ca++)
{
scanf("%d%d%d",&n,&p,&q);
memset(ha,-1,sizeof(ha));
for(int i=1;i<=p+1;i++)
{
int cur;
scanf("%d",&cur);
ha[cur]=i;
}
for(int i=1;i<=q+1;i++)
{
int cur;
scanf("%d",&cur);
a[i]=ha[cur]; //对应起来
}
int tt=0;
for(int i=1;i<=q+1;i++)
{
if(a[i]==-1) //不公共,不考虑
continue;
if(!tt) //第一个
{
++tt;
b[tt]=a[i];
continue;
}
else if(a[i]>b[tt]) //个数肯定增加
{
b[++tt]=a[i];
continue;
}
int temp=lower_bound(b+1,b+tt+1,a[i])-b; //找到恰好大于它的位置
b[temp]=a[i]; //更新小
}
printf("Case %d: %d\n",ca,tt);
}
return 0;
}
uva 10635 - Prince and Princess lcs->lis 2018-2-8
最新推荐文章于 2020-07-08 11:56:16 发布