矩形嵌套
时间限制: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

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = ;
int a[maxn],b[maxn];
int G[maxn][maxn];
int d[maxn];
int n;
int dp(int i){
int &ove=d[i];/*记忆化搜索*/
if(ove>) return ove;
ove=;
for( int j=; j<=n; j++ ){
if(G[i][j]){
ove=max(ove,dp(j)+);
}
}
return ove;
} int main(){
// freopen("input.txt","r",stdin);
// freopen("output","w",stdout);
int t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for( int i=; i<=n; i++ ){
scanf("%d%d",&a[i],&b[i]);
}
memset(G,,sizeof(G));
for( int i=; i<=n; i++ ){
for( int j=; j<=n; j++ ){
if((a[i]>a[j]&&b[i]>b[j])||(a[i]>b[j]&&b[i]>a[j])){
G[i][j]=;/*无向连通图构造*/
}
}
}
int ans=-;
int tmp;
for( int i=; i<=n; i++ ){
tmp=dp(i);
ans=max(ans,tmp);
}
printf("%d\n",ans);
}
return ;
}

DAG---矩阵嵌套问题的更多相关文章

  1. DAG模型——嵌套矩阵

    有向无环图上的动态规划是学习动态规划的基础,很多问题都可以转化为DAG上的最长路.最短路或路径计数问题. 嵌套矩阵 有n个矩阵,每个矩阵可以用两个整数a,b描述,表示它的长和宽.矩阵X(a,b)可以嵌 ...

  2. 9.2 DAG上的动态规划

    在有向无环图上的动态规划是学习动态规划的基础,很多问题都可以转化为DAG上的最长路,最短路或路径计数问题 9.2.1 DAG模型 嵌套矩形问题: 矩形之间的可嵌套关系是一种典型的二元关系,二元关系可以 ...

  3. UVa 103 - Stacking Boxes

    题目大意:矩阵嵌套,不过维数是多维的.有两个个k维的盒子A(a1, a1...ak), B(b1, b2...bk),若能找到(a1...ak)的一个排列使得ai < bi,则盒子A可嵌套在盒子 ...

  4. 16-underscore库(上)

    第16课 underscore库 一.介绍 Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象.他弥补了 ...

  5. underscore 笔记

    //reduce是汇总 递归 var perDesc=[ {name: "haha", "email": "haha@email.com"} ...

  6. UnderScore.jsAPI记录

    Collection Functions (Arrays or Objects) each         _.each(list, iterator, [context]) 遍历list中的所有元素 ...

  7. underscore.js源码解析【数组】

    // Array Functions // --------------- // Get the first element of an array. Passing **n** will retur ...

  8. 3.Airflow使用

    1. airflow简介2. 相关概念2.1 服务进程2.1.1. web server2.1.2. scheduler2.1.3. worker2.1.4. celery flower2.2 相关概 ...

  9. Underscore.js实用插件

    Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象. 他解决了这个问题:“如果我面对一个空白的 HTML ...

  10. dp专题备忘录

    hdu 1024:基础dp题 hdu 1029:主元素问题,很快的解法,计数器 hdu 1069:LIS hdu 1074:数位dp,数位dp基础 hdu 1257:简单LIS,要仔细分析为什么是求最 ...

随机推荐

  1. Android App性能测试之二:CPU、流量

    CPU---监控值的获取方法.脚本实现和数据分析 1.获取CPU状态数据 adb shell dumpsys cpuinfo | findstr packagename 自动化测试脚本见cpustat ...

  2. cnblogs鼠标点击特效

    喜大普奔! 伸手党福利 ! 创建mouse.js文件, 上传到博客, 直接引用即可, 内容如下: (function(window, document, undefined) { var hearts ...

  3. Thread和Runnable的区别

    Runnable源码 Thread源码 结论 Thread实现了Runnable接口的类,使得run支持多线程. 因类的单一继承原则,推荐使用Runnable接口实现多线程

  4. Subsequence(序列自动机模板题)

    题目链接:https://nanti.jisuanke.com/t/38232 题目大意:给你一个字符串,然后再给你m个字符串,然后问你在第一个字符串中不连续的子串能不能构成输入的子串. 具体思路:构 ...

  5. C# - 代码重构

    隐藏更多 只暴露集合中供人使用的单一功能,将关于集合的更多功能隐藏掉. 旧版本 public class Animal{    private List<string> LanguageL ...

  6. torch分类问题

    import torch from torch.autograd import Variable import torch.nn.functional as F import matplotlib.p ...

  7. python excel的操作

    1.在测试用例中生成的数据报错到已存在的excel里面 1 import xlrd 2 from xlutils.copy import copy 3 class test: 4 def write_ ...

  8. ES进阶--02

    第11节深度探秘搜索技术_案例实战基于dis_max实现best fields策略进行多字段搜索 课程大纲 1.为帖子数据增加content字段 POST /forum/article/_bulk{ ...

  9. 【Python selenium自动化环境配置】4步搞定ChromeDriver版本选择

    很多刚做自动化的小伙伴,会在ChromeDriver版本选择时犯难,看来大家都被坑过,真正掌握独门绝技,都不是难事儿. 看好了主要步骤就4部 1.确定谷歌浏览器版本 2.找到谷歌浏览器版本与Chrom ...

  10. Git使用十:匿名分支和checkout命令

    匿名分支 新建个仓库,并且初始化,创建3个文件,并提交 此时在没有创建新分支的情况下,checkout一下,比如上一个快照 这一段话的意思是,使用了checkout命令,但是没有指定分支名,所以git ...