ZOJ 3019 Puzzle

来源:互联网 发布:海岛奇兵震爆数据 编辑:程序博客网 时间:2024/05/17 22:05
 

For sequences of integers a and b, if you can make the two sequences the same by deleting some elements in a and b, we call the remaining sequence "the common sub sequence". And we call the longest one the LCS.

Now you are given two sequences of integers a and b. You can arrange elements in a and b in any order. You are to calculate the max length of the LCS of each arrangement ofa and b.

Input

Input will consist of multiple test cases. The first line of each case is two integers N(0 < N < 10000), M(0 < M < 10000) indicating the length ofa and b. The second line is N 32-bit signed integers ina. The third line is M 32-bit signed integers in b.

Output

Each case one line. The max length of the LCS of each arrangement of a andb.

Sample Input

5 41 2 3 2 11 4 2 1

Sample Output

3


公共序列最长(乱序)


排序,然后找就行



#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define N 100005int a[N],b[N];int main(){    int aa,bb,i;    while(~scanf("%d%d",&aa,&bb))    {        for(i=0;i<aa;i++)            scanf("%d",&a[i]);        for(i=0;i<bb;i++)            scanf("%d",&b[i]);        sort(a,a+aa);        sort(b,b+bb);        int ans=0;        int j=0,temp=0;//temp是重点        for(i=0;i<aa;i++)            for(j=temp;j<bb;j++)            if(a[i]==b[j])        {            ans++;            temp=j+1;            break;        }        printf("%d\n",ans);    }    return 0;}



1 0
原创粉丝点击