• BZOJ 3359: [Usaco2004 Jan]矩形( dp )


    数据范围这么小..怎么乱搞都可以吧...

    先排序一遍然后O(n²) dp

     ------------------------------------------------------------------

    #include<bits/stdc++.h>
     
    using namespace std;
     
    const int maxn = 109;
     
    struct R {
    int x, y;
    inline void Read() {
    scanf("%d%d", &x, &y);
    if(x < y) swap(x, y);
    }
    bool operator < (const R &o) const {
    return x > o.x || x == o.x && y > o.y;
    }
    } A[maxn];
     
    int dp[maxn];
     
    bool ok(int a, int b) {
    return A[a].x > A[b].x && A[a].y >= A[b].y || A[a].x >= A[b].x && A[a].y > A[b].y;
    }
     
    int main() {
    int N;
    cin >> N;
    for(int i = 0; i < N; i++) A[i].Read();
    sort(A, A + N);
    for(int i = 0; i < N; i++) {
    dp[i] = 1;
    for(int j = 0; j < i; j++)
       if(ok(j, i))
           dp[i] = max(dp[i], dp[j] + 1);
    }
    cout << *max_element(dp, dp + N) << " ";
    return 0;
    }

    -------------------------------------------------------------------

    3359: [Usaco2004 Jan]矩形

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 11  Solved: 7
    [Submit][Status][Discuss]

    Description

        给出N个矩形(1≤N≤100)和它的长和宽(不超过1000),写一个程序找出最大的K,使得
    有K个矩形满足层层包含的关系,即里层的矩形被所有外层的矩形包含.一个矩形P1包含另一个
    矩形P2,则P2的一边小于P1的一边,并且P9的另一边不超过P1的另一边.如果两个矩形相同,视为不包含.如2 x 1的矩形被2x2的矩形包含,不被1 x 2的矩形包含.
        注意:矩形的顺序可以是任意的,且矩形可以旋转.

    Input

        第1行:整数N.
        第2到N+1行:矩形的长和宽,均为整数.

    Output

        一行,输出最大的包含数K.

    Sample Input

    4
    8 14
    16 28
    29 12
    14 8

    Sample Output

    2

    HINT

    Source

  • 相关阅读:
    C#获取IP信息
    获取百度地图按条件查找的信息
    react中如何实现一个按钮的动态隐藏和显示(有效和失效)
    es6 关于map和for of的区别有哪些?
    js 高级程序设计 第四章学习笔记
    ant design Table合并单元格合并单元格怎么用?
    React中如何实现模态框每次打开都是初始界面
    前端界面布局相关整理之2017
    待改善的代码整理
    cq三期备注说明
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4717692.html
Copyright © 2020-2023  润新知