hdu5904 简单dp

来源:互联网 发布:淘宝绑定优酷怎么取消 编辑:程序博客网 时间:2024/06/03 19:15

http://acm.hdu.edu.cn/showproblem.php?pid=5904

求两个串最长公共递增子序列的长度,且递增的序列相差1,这就简单多了,只要求出两个序列以每一位为结尾的连续序列的长度

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;const int maxn=2e5+5;int a[maxn],b[maxn],dpa[maxn],dpb[maxn];int main(){    int t;    int n,m;    scanf("%d",&t);    while(t--)    {        memset(dpa,0,sizeof(dpa));        memset(dpb,0,sizeof(dpb));        scanf("%d%d",&n,&m);        for(int i=0; i<n; i++)        {            scanf("%d",&a[i]);            dpa[a[i]]=dpa[a[i]-1]+1;        }        for(int i=0; i<m; i++)        {            scanf("%d",&b[i]);            dpb[b[i]]=dpb[b[i]-1]+1;        }        int sum=0;        for(int i=0; i<200005; i++)            sum=max(sum,min(dpa[i],dpb[i]));        printf("%d\n",sum);    }    return 0;}
0 0
原创粉丝点击