xynuoj 1805 矩形嵌套

标签: 最长递增子序列
8人阅读 评论(0) 收藏 举报
分类:

1805: 矩形嵌套

时间限制: 1 Sec  内存限制: 64 MB
[提交][状态][讨论版]

题目描述

有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

来源

nyoj动态规划 

排序+最长递增子序列问题

因为题目中只是让选出尽可能多的矩阵,所以用贪心的思想的话,自然会想到先给序列排下序,然后分析一下会发现其实是在一个序列中找出最长的子序列(最长递增子序列问题),而求最长递增子序列是用动态规划的思想来做,循环该点之前的所有点,找出来比该点小的然后判断是否加1之后比该点的dp大



#include<stdio.h>
#include<algorithm>
using namespace std;
struct Node{
	int m,n;
}a[1010]; 
int cmp(Node x,Node y){
	if(x.m==y.m)
	return x.n<y.n; 
	else
	return x.m<y.m;
}
int main(){
	int T,N;
	scanf("%d",&T);
	int dp[1010];//表示以第i个矩阵结尾的最多的矩阵个数 
	while(T--){
		scanf("%d",&N);
		for(int i=0;i<N;i++){
			scanf("%d %d",&a[i].m,&a[i].n);
			if(a[i].m>a[i].n)
			swap(a[i].m,a[i].n);
		}
		sort(a,a+N,cmp);
		for(int i=0;i<N;i++){
			dp[i]=1;
		} 
		for(int i=1;i<N;i++){
			for(int j=0;j<i;j++){
				if(a[j].m<a[i].m&&a[j].n<a[i].n&&dp[j]+1>dp[i]){
					dp[i]+=1;
				}
			}
		}
		int ans=0;
		for(int i=0;i<N;i++){
			if(dp[i]>ans)
			ans=dp[i];
		}
		printf("%d\n",ans);
	}
	return 0;
}
查看评论

Android触摸事件传递机制及viewpager嵌套fragment冲突处理

本课程讲要对安卓中的触摸事件分发机制理论,并结合开发中常出现的触摸冲突做讲解
  • 2016年11月08日 14:00

嵌套矩形——DAG上的动态规划

有向无环图(DAG,Directed Acyclic Graph)上的动态规划是学习动态规划的基础。很多问题都可以转化为DAG上的最长路、最短路或路径计数问题。 题目描述:       有n个...
  • user_longling
  • user_longling
  • 2014-05-17 11:43:11
  • 3959

NYOJ16 矩形嵌套 (DAG模型_dp)

描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a...
  • h1021456873
  • h1021456873
  • 2015-09-10 10:41:55
  • 332

NYOJ 16 矩形嵌套 【DAG模型——嵌套矩形问题】

嵌套矩形问题描述: 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a 刘汝佳说:矩形之间的“可嵌套”关系是一个典型的二元关系,二元...
  • nuanxin_520
  • nuanxin_520
  • 2016-01-22 17:55:28
  • 675

NYOJ - 矩形嵌套(经典dp)

矩形嵌套 时间限制:3000 ms  |           内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩...
  • SevenMIT
  • SevenMIT
  • 2013-04-12 21:14:54
  • 4844

【java】嵌套矩形

有n个矩形,每个矩形可以用两个整数a,b表示,分别表示它的长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a 例如:1,5可以嵌套在6,2内,但不能嵌套在3,4内。 给出n个矩形,选出尽量...
  • wow_bc
  • wow_bc
  • 2017-04-30 14:01:32
  • 134

矩形嵌套(最小字典序)—DAG动态规划问题

初步学习DAG(有向无环图dp) 问题:        描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a...
  • qq_33850438
  • qq_33850438
  • 2016-02-19 02:06:01
  • 497

NYOJ矩形嵌套

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=16 DAG上的动态规划 代码: #include #include...
  • wsn564533648
  • wsn564533648
  • 2016-03-31 18:46:59
  • 173

uva 103 (DAG矩形嵌套最长路)

题意: 给一个n维的东西,若一个的n维都小于另一个的n维,则其可嵌套。 求最长可嵌套的有几个,并打印出路径。 解析: DAG上的最长路,先将可嵌套的图标记g[i][j] = 1,然后枚...
  • u013508213
  • u013508213
  • 2015-03-11 20:59:48
  • 359

经典DP 嵌套矩形

dp初级入门必学,有南阳理工学院OJ的题在此:http://acm.nyist.net/JudgeOnline/problem.php?pid=16     简单dp,刘汝佳白书第一本,161页。稍...
  • liuqiyao_01
  • liuqiyao_01
  • 2013-03-29 10:47:34
  • 2839
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 1637
    排名: 3万+
    最新评论