`
Simone_chou
  • 浏览: 195830 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

矩形嵌套(DP)

    博客分类:
  • NYOJ
 
阅读更多

 

矩形嵌套

时间限制:3000 ms  |  内存限制:65535 KB
难度:4
 
描述
有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。
 
输入
第一行是一个正正数N(0<N<10),表示测试数据组数,
每组测试数据的第一行是一个正正数n,表示该组测试数据中含有矩形的个数(n<=1000)
随后的n行,每行有两个数a,b(0<a,b<100),表示矩形的长和宽
输出
每组测试数据都输出一个数,表示最多符合条件的矩形数目,每组输出占一行
样例输入
1
10
1 2
2 4
5 8
6 10
7 9
3 1
5 8
12 10
9 7
2 2
样例输出
5

 

      思路:

      DP。一个矩形有长也有宽,固定把小的放左边,大的放右边,先对一边排序,再对另一边排序,排序后求最长上升子序列即可。

 

      AC:

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

typedef struct { int l, w; } node;

node no[1005];
int dp[1005];

bool cmp(node a, node b) {
        if (a.l != b.l) return a.l < b.l;
        return a.w < b.w;
}

int main() {
        int t;
        scanf("%d", &t);

        while (t--) {
                int n;
                scanf("%d", &n);

                for (int i = 0; i < n; ++i) {
                        int a, b;
                        scanf("%d%d", &a, &b);
                        no[i].l = min(a, b);
                        no[i].w = max(a, b);
                }

                sort(no, no + n, cmp);

                int Max = 1;
                dp[0] = 1;

                for (int i = 1; i < n; ++i) {
                        dp[i] = 1;

                        for (int j = 0; j < i; ++j) {
                                if (no[j].l < no[i].l &&
                                    no[j].w < no[i].w &&
                                    dp[i] < dp[j] + 1)
                                    dp[i] = dp[j] + 1;
                        }

                        Max = max(Max, dp[i]);
                }

                printf("%d\n", Max);
        }

        return 0;
}

 

分享到:
评论

相关推荐

    DP-900中文.pdf

    * Treemap 是一种有颜色的嵌套矩形图表,显示由相对矩形的大小和颜色表示的单个数据点。 * 散射图可以显示两个数值之间的关系。 * 关键的影响图可以显示选定结果或值的主要贡献者。 五、数据存储 * Azure 存储帐户...

    安卓高级xml输入框EditText及其登陆界面布局shape使用

    shape是一种自定义图形,可以用来创建各种形状的背景,如矩形、圆角矩形等。通过在XML中定义shape元素,我们可以设置边框颜色、宽度、圆角半径,甚至添加渐变效果,以此来提升登录界面的视觉效果。例如: ```xml ...

    leetcode分类-acm:算法导论

    最大的矩形 嵌套对象 哈希表追踪 哈希集 缓存 旋转 桶排序 分布式文件系统 BFS 堆 树集 跟踪最小值/最大值并更新结果 流(双端队列/缓存/堆/树集) 排序 间隔 实现数据结构 特里 段树和二叉索引树 图(主要是拓扑...

    EditText属性详解

    通过创建一个XML资源文件,我们可以定义矩形、圆角矩形等形状,设置边框宽度、颜色以及填充色。例如: ```xml &lt;stroke android:width="2dp" android:color="@color/your_border_color" /&gt; ...

    Android ListView卡片效果

    卡片设计是现代UI设计中的一种流行趋势,它将信息封装在一块矩形区域中,通常包含标题、图片和描述等内容。在Android中,我们可以使用多种方式来实现卡片效果,如使用自定义布局、第三方库如Android Design Support ...

    Android 5.0 CardView+ListView 卡片布局应用

    CardView的设计理念是提供一个具有阴影效果和圆角的矩形容器,使得应用程序中的内容看起来更加立体和易于识别。在本主题中,我们将深入探讨如何在Android应用中使用CardView结合ListView来创建卡片布局。 首先,让...

    Android代码-BadgeView实现在控件上显示小标签.rar

    2. **布局嵌套**:为了使BadgeView与目标控件关联,我们需要在XML布局文件中将BadgeView作为子视图嵌套在目标控件内部。这样,可以通过相对布局或者帧布局来定位BadgeView的位置,例如,让它位于目标控件的右上角。 ...

    android studio xml文件实现添加注释

    shape 标签中可以嵌套的标签有: * solid:用于填充形状的内部颜色 * gradient:用于创建渐变效果 * size:用于设置形状的大小 shape 标签的属性有: * android:shape:形状的类型,包括矩形(rectangle)、圆形...

    自定义list

    在这个布局中,我们可以使用`shape`资源来定义一个具有圆角的矩形背景。例如,可以在res/drawable目录下创建一个xml文件,如`round_corner_background.xml`: ```xml &lt;solid android:color="@color/your_color"/&gt;...

    安卓用户界面

    - **定义**:`View` 类是Android中所有可视UI组件的基类,它负责屏幕上的矩形区域的绘制以及事件处理。 - **继承关系**: - `extends Object` - `implements Drawable.Callback, KeyEvent.Callback, ...

    Android圆角ListView并完美解决和ScrollView共存问题

    在该文件中,我们可以定义一个矩形,并设置其四个角为圆角: ```xml &lt;solid android:color="@android:color/white" /&gt; &lt;!-- 设置背景颜色 --&gt; &lt;corners android:radius="8dp" /&gt; &lt;!-- 设置圆角半径 --&gt; ``` 接...

    Android项目按钮点击WIN8 磁贴效果.rar

    8. **布局嵌套**: 在实际项目中,你可能需要将这个自定义的磁贴按钮放在其他布局中,如LinearLayout、RelativeLayout或ConstraintLayout。理解布局管理器的工作原理是必要的,以确保按钮与其他视图的协调。 9. **...

    Android编程实现圆角边框布局效果的方法

    在`LinearLayout`内嵌套了一个`TableLayout`,这是用来创建表格样式的布局。`TableLayout`允许你创建多行的表格,每个行(`TableRow`)可以包含多个列。`TableLayout`的宽度同样设置为`fill_parent`,高度设置为`...

Global site tag (gtag.js) - Google Analytics