HDU 1423 Greatest Common Increasing Subsequence (LCIS)

来源:互联网 发布:js遍历 元素集合 编辑:程序博客网 时间:2024/05/17 20:58

Greatest Common Increasing Subsequence

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7667    Accepted Submission(s): 2480


Problem Description
This is a problem from ZOJ 2432.To make it easyer,you just need output the length of the subsequence.
 

Input
Each sequence is described with M - its length (1 <= M <= 500) and M integer numbers Ai (-2^31 <= Ai < 2^31) - the sequence itself.
 

Output
output print L - the length of the greatest common increasing subsequence of both sequences.
 

Sample Input
151 4 2 5 -124-12 1 2 4
 

Sample Output
2
 

Source

ACM暑期集训队练习赛(二)



垃圾题目没有说输出之间应有一个空行,会PE。

LCIS裸题。


#include <stdio.h>#include <iostream>#include <string.h>using namespace std;int a[555],b[555];int f[555];int main(){    int T;    scanf("%d",&T);    int p=0;    while(T--)    {        int l1,l2;        scanf("%d",&l1);        for(int i=1;i<=l1;i++) scanf("%d",&a[i]);        scanf("%d",&l2);        for(int i=1;i<=l2;i++) scanf("%d",&b[i]);        memset(f,0,sizeof f);        for(int i=1;i<=l1;i++)        {            int k=0;//f[k]=0就好            for(int j=1;j<=l2;j++)            {                if(a[i]==b[j])                {                    f[j]=max(f[j],f[k]+1);                }                else if(a[i]>b[j])                {                    if(f[k]<f[j])                        k=j;                }            }        }        if(p)            printf("\n");        p++;        int ans=0;        for(int i=1;i<=l2;i++)            ans=max(ans,f[i]);        printf("%d\n",ans);    }    return 0;}


阅读全文
0 0