zoukankan      html  css  js  c++  java
  • poj 2127 lcis wa

    #include<iostream>
    #include<cstdio>
    #include<stack>
    #include<algorithm>
    #include<cstring>
    
    using namespace std;
    
    typedef long long ll;
    const int maxn = 505;
    const ll one = 1;
    const ll inf = one << 32;
    ll n1, n2, a[maxn], b[maxn];
    ll l[maxn][maxn];
    struct xx{
        int i, j;
    }pre[maxn][maxn], ind[maxn];
    
    int insert_(ll *la, int p, int i, int j, ll e){
        while(la[p] < e) p++;
        la[p]=e;
        ind[p]=(xx){i, j};
        if(p) pre[i][j]=ind[p-1];
        return p;
    }
    
    void lcis(){
        int i, j, x, p=0;
        for(i=0; i<n2; i++)
            fill_n(l[i], n2, inf);
    
        memset(pre, -1, sizeof(pre));
    
        for(i=0; i<n1; i++){
            x=-1, p=0;
            for(j=0; j<n2; j++){
                if(a[i]==b[j]) x=p=insert_(l[j], p, i, j, a[i]);
                else{
                    if(x!=-1 && l[j][x]>l[j-1][x]) l[j][x]=l[j-1][x];
                    else x=-1;
                }
            }
        }
    }
    
    void print(){
        int t, j, i;
        for(j=n2-1; j>-1; j--) if(l[n2-1][j]!=inf)
            break;
        stack<ll> s;
        printf("%d
    ", j+1);
        i = ind[j].i;   j=ind[j].j;
        while(i > -1){
            s.push(a[i]);
            t=pre[i][j].i;  j=pre[i][j].j;
            i=t;
        }
        while(!s.empty()){
            printf("%lld", s.top());  s.pop();
            printf("%c", s.empty()?'
    ':' ');
        }
    }
    
    int main(){
        while(scanf(" %lld", &n1)==1){
            for(int i=0; i<n1; i++) scanf(" %lld", a+i);
            scanf(" %lld", &n2);
            for(int i=0; i<n2; i++) scanf(" %lld", b+i);
            lcis();
            print();
        }
        return 0;
    }
    

     to be continued;

  • 相关阅读:
    实习第五十七天
    武汉第五十六天
    武汉第五十五天
    常用环境配置
    http 基本验证(nginx)
    nginx configuration
    docker run demo
    初识Hadoop
    大数据简介
    HDFS 存放策略
  • 原文地址:https://www.cnblogs.com/ramanujan/p/3795157.html
Copyright © 2011-2022 走看看