zoukankan      html  css  js  c++  java
  • nyoj 16 最长上升子序列变形

    经典矩形嵌套问题,先排序再求LIS。

    需要注意在枚举j的时候x和y都要小于i才行。

     1 #include <algorithm>
     2 #include <cstdio>
     3 using namespace std;
     4 
     5 const int N = 1000;
     6 int dp[N];
     7 
     8 struct Node
     9 {
    10     int x, y;
    11     bool operator < ( const Node & o ) const
    12     {
    13         if ( x != o.x ) return x < o.x;
    14         return y < o.y;
    15     }
    16 } node[N];
    17 
    18 int main ()
    19 {
    20     int t;
    21     scanf("%d", &t);
    22     while ( t-- )
    23     {
    24         int n;
    25         scanf("%d", &n);
    26         for ( int i = 0; i < n; i++ )
    27         {
    28             scanf("%d%d", &node[i].x, &node[i].y);
    29             if ( node[i].x > node[i].y )
    30             {
    31                 swap( node[i].x, node[i].y );
    32             }
    33         }
    34         sort( node, node + n );
    35         int ans = -1;
    36         for ( int i = 0; i < n; i++ )
    37         {
    38             dp[i] = 1;
    39             for ( int j = 0; j < i; j++ )
    40             {
    41                 if ( node[j].x < node[i].x && node[j].y < node[i].y )
    42                 {
    43                     dp[i] = max( dp[i], dp[j] + 1 );
    44                 }
    45             }
    46             ans = max( ans, dp[i] );
    47         }
    48         printf("%d
    ", ans);
    49     }
    50     return 0;
    51 }

    也可以根据矩形的嵌套关系建图,然后用拓扑排序+dp或者是逆向建图记忆花搜索来求解。

  • 相关阅读:
    python操作MongoDB(API)
    jQuery插件—validation实现表单校验
    jquery实现下拉列表二级联动
    OSPF配置(H3C)
    OSPF区域
    OSPF路由协议
    直连路由和静态路由
    IP路由原理
    RIP路由协议
    deepin安装VMware workstation
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4649297.html
Copyright © 2011-2022 走看看