zoukankan      html  css  js  c++  java
  • tyvj1213 嵌套矩形

    描述

       有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。

    输入格式

    第1行n (n<=2000)
    第2到n+1行每行两个数a,b,表示这个矩形的长和宽

    输出格式

    一个数,最多符合条件的矩形数目

    测试样例1

    输入


    1 5 
    6 2 
    3 4

    输出

    2
     
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    #include<vector>
    #define ll long long
    using namespace std;
    const int maxn = 2005;
    vector<int> g[maxn];
    int n,a[maxn],b[maxn],topo[maxn],cnt;
    int f[maxn],ans;
    bool vis[maxn];
    void dfs(int x){
        vis[x] = true;
        for(int i = 0;i < g[x].size();i++){
            if(!vis[g[x][i]]) dfs(g[x][i]);
        }
        topo[cnt--] = x;
    }
    void dp(int x){
        if(!g[x].size()){
            f[x] = 1;
            return;
        }
        for(int i = 0;i < g[x].size();i++){
            if(!f[g[x][i]]) dp(g[x][i]);
            f[x] = max(f[x],f[g[x][i]] + 1);
        }
        ans = max(f[x],ans);
    }
    int main(){
        cin>>n;
        for(int i = 1;i <= n;i++){
            scanf("%d%d",&a[i],&b[i]);
            if(a[i] < b[i]) swap(a[i],b[i]);
        }
        for(int i = 1;i <= n;i++){
            for(int j = i+1;j <= n;j++){
                if(a[i] > a[j] && b[i] > b[j]) g[i].push_back(j);
                else if(a[j] > a[i] && b[j] > b[i]) g[j].push_back(i);
            }
        }
        cnt = n;
        for(int i = 1;i <= n;i++){
            if(!vis[i]) dfs(i);
        }
        for(int i = 1;i <= n;i++){
            if(!f[topo[i]]) dp(topo[i]); 
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    SQL SERVER 博客
    deadlock
    dbcc 官方文档
    HOW TO CHECK FOR ACTIVE TRACE FLAGS ON MICROSOFT SQL SERVER
    Enable a SQL Server Trace Flag Globally on Linux
    SQL server 2008 安装问题解决 转
    Looking deeper into SQL Server using Minidumps
    sql-server-linux 官网
    破解SQLServer for Linux预览版的3.5GB内存限制 (RHEL篇) 转
    SQL Server on Linux: How? Introduction: SQL Server Blog
  • 原文地址:https://www.cnblogs.com/hyfer/p/5689446.html
Copyright © 2011-2022 走看看