zoukankan      html  css  js  c++  java
  • nyist -16


    #include <iostream>
    #include<cstring>
    using namespace std;
    struct node
    {
        int l,w;
    }dp[1005];
    int g[1005][1005];
    int d[1005];
    int n,max_v;
    int f(int i)
    {
        if (d[i]>0) return d[i];
        d[i]=1;
        for (int j=0;j<n;j++)
        {
            if (g[i][j])
                d[i]=max(d[i],f(j)+1);
        }
        max_v=max(max_v,d[i]);
        return d[i];
    }
    int main()
    {
      
        int N;
        cin>>N;
        while (N--)
        {
            cin>>n;
            int x,y;
             memset(g,0,sizeof(g));
            for (int i=0;i<n;i++)
            {
                cin>>x>>y;
                dp[i].l=max(x,y);
                dp[i].w=min(x,y);
            }
            for (int i=0;i<n;i++)
            {
                for (int j=i+1;j<n;j++)
                {
                    if (dp[i].l>dp[j].l && dp[i].w>dp[j].w)          g[j][i]=1;


                    else if ( dp[i].l<dp[j].l && dp[i].w<dp[j].w )      g[i][j]=1;

                    else g[j][i]=g[i][j]=0;
                }
                d[i]=0;
            }
            max_v=0;
            for (int i=0;i<n;i++)
                f(i);
            cout<<max_v<<endl;
        }
        return 0;
    }

    #include <iostream>

    using namespace std;


    struct node
    {
        int l,w;
    }dp[1005];


    int g[1005][1005];
    int d[1005];
    int k,max_v;
    int f(int i)
    {
        if (d[i]>0) return d[i];
        d[i]=1;
        for (int j=0;j<k;j++)
        {
            if (g[i][j])
                d[i]=max(d[i],f(j)+1);
        }
        max_v=max(max_v,d[i]);
        return d[i];
    }
    int main()
    {
        int n;
        cin>>n;
        while (n--)
        {
            cin>>k;
            int x,y;
            for (int i=0;i<k;i++)
            {
                cin>>x>>y;
                dp[i].l=max(x,y);
                dp[i].w=min(x,y);
            }


            for (int i=0;i<k;i++)
            {
                for (int j=i+1;  j<k;  j++)
                {
                    if (dp[i].l>dp[j].l && dp[i].w>dp[j].w)
                    {
                        g[j][i]=1;
                        g[i][j]=0;
                    }
                    else if (dp[i].l<dp[j].l && dp[i].w<dp[j].w)
                    {
                        g[j][i]=0;
                        g[i][j]=1;
                    }
                    else g[j][i]=g[i][j]=0;
                }
                d[i]=0;
            }
            max_v=0;
            for (int i=0;i<k;i++)
                f(i);
            cout<<max_v<<endl;
        }
        return 0;
    }
           

  • 相关阅读:
    输入'过程'求方差算法的简单优化(免去数组的使用)
    PAT 甲级 1002 A+B for Polynomials
    常见算法时间函数的增长趋势分析
    洛谷 P4888 三去矩阵
    PAT 甲级 1001 A+B Format
    网站云服务器迁移时遇到的坑
    Angular JS中自定义标签 属性绑定的解释
    how to do a mass update in Laravel5 ( 在Laravel 5里面怎么做大量数据更新 )
    javascript 到将来某个时间(2020-5-20)的倒计时
    javascript 数字日期格式转换为中文
  • 原文地址:https://www.cnblogs.com/2014acm/p/3914393.html
Copyright © 2011-2022 走看看