zoukankan      html  css  js  c++  java
  • POJ 1065

    #include <iostream>
    #include <algorithm>
    #define MAXN  5005 
    using namespace std;
    
    struct node
    {
        int l;
        int w;
        int len;
        bool lower_than(node a)
        {
            if(l < a.l || w < a.w)
            {
                return true;
            }
            return false;
        }
    };
    
    node _node[MAXN];
    
    bool op(node a,node b)
    {
        if(a.l == b.l)
        {
            return a.w < b.w;
        }
        else
        {
            return a.l < b.l;
        }
    }
    
    bool op_1(node a,node b)
    {
        if(a.w == b.w)
        {
            return a.l < b.l;
        }
        else
        {
            return a.w < b.w;
        }
    }
    
    int main()
    {
        //freopen("acm.acm","r",stdin);
        int test;
        int n;
        int i;
        int j;
        int max;
        cin>>test;
        while(test --)
        {
            //cin>>n;
            scanf("%d",&n);
            max = -1;
            for(i = 0; i < n; ++ i)
            {
                //cin>>_node[i].l;
                scanf("%d",&_node[i].l);
                scanf("%d",&_node[i].w);
                //cin>>_node[i].w;
                _node[i].len = 1;
            }
            sort(_node,_node+n,op);
            for(i = 0; i < n; ++ i)
            {
                for(j = 0; j < i; ++ j)
                {
                    if(_node[i].lower_than(_node[j]))
                    {
                        if(_node[i].len < _node[j].len + 1)
                        {
                            _node[i].len = _node[j].len + 1;
                        }
                    }
                }
            }
    
            for(i = 0; i < n; ++ i)
            {
    
                if(_node[i].len > max)
                {
                    max = _node[i].len;
    
                }
            }
    
            sort(_node,_node+n,op_1);
            
            for(i = 0; i < n; ++ i)
            {
                _node[i].len = 1;
            }
    
    
            for(i = 0; i < n; ++ i)
            {
                for(j = 0; j < i; ++ j)
                {
                    if(_node[i].lower_than(_node[j]))
                    {
                        if(_node[i].len < _node[j].len + 1)
                        {
                            _node[i].len = _node[j].len + 1;
                        }
                    }
                }
            }
    
    
            int max_1 = -1;
            for(i = 0; i < n; ++ i)
            {
                if(_node[i].len > max_1)
                {
                    max_1 = _node[i].len;
                }
            }
            if(max > max_1)
            {
                max = max_1;
            }
            cout<<max<<endl;
        }
    }

    关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

    技术网站地址: vmfor.com

  • 相关阅读:
    MTK Android 源码目录分析
    MTK Android 平台语言支持状态
    开坑了啦啦啦..
    codeforces泛做..
    用介个新的blog咯..
    【UR #5】怎样跑得更快
    【UR #5】怎样提高智商
    【集训队互测2016】消失的源代码
    口胡
    [八省联考2018]劈配
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4563246.html
Copyright © 2011-2022 走看看