当前位置: 首页 > article >正文

矩形嵌套 之一题多解dp篇

题目描述

有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X 90度)。例如(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
来源/分类

图论/动态规划

思路

先排序,在通过动态规划找到最长不上升子序列

如果不会的话点击下方↓

最长不下降子序列LIS-CSDN博客文章浏览阅读1.7k次,点赞25次,收藏22次。设有由n个不相同的整数组成的数列,记为: a(1)、a(2)、……、a(n)且a(i)<>a(j) (i<>j).例如3,18,7,14,10,12,23,41,16,24。若存在i1<… < ie且有a(i1)<… https://blog.csdn.net/Lucas55555555/article/details/137052408?spm=1001.2014.3001.5502

代码
#include <bits/stdc++.h>
using namespace std;
int N,n,dp[1100];
struct rectangle
{
	int x,y;
}r[1010];
bool comp(rectangle r1,rectangle r2)
{
	if(r1.x<r2.x)
	{
		return 1;
	}
	else 
	{
		if(r1.x==r1.x&&r1.y<r2.y)//可以旋转
		{
			return 1;
		}
		else 
		{
			return 0;
		}
	}
}
void lis()
{
	int maxx=-1;
	for(int i=1;i<=n;i++)
	{
		dp[i]=1;
	}
	for(int i=2;i<=n;i++)
	{
		for(int j=1;j<=i-1;j++)
		{
			if(r[j].x<r[i].x&&r[j].y<r[i].y)	
			{
				if(dp[i]<dp[j]+1)
				{
					dp[i]=dp[j]+1;
					if(maxx<dp[i])
					{
						maxx=dp[i];
					}
				}
			}
		}
	}
	cout<<maxx<<endl;
}
int main()
{
	cin>>N;
	for(int i=1;i<=N;i++)
	{
		cin>>n;
		for(int j=1;j<=n;j++)
		{
			cin>>r[j].x>>r[j].y;
			if(r[j].x<r[j].y)
			{
				swap(r[j].x,r[j].y);
			}
		}
		sort(r,r+1+n,comp);
		lis();
	}
	return 0;
} 
更多

敬请收看

下一篇————矩形嵌套 之一题多解图论篇


http://www.kler.cn/a/446703.html

相关文章:

  • Tekscan压力分布测量系统:电池安全与质量提升的保障
  • Spring Cloud Gateway 源码
  • 数据分析实战—鸢尾花数据分类
  • threejs 建筑设计(室内设计)软件 技术调研之四 墙体添加真实门窗并保持原材质
  • CSDN数据大屏可视化【开源】
  • SpringBoot项目Jar包使用systemctl运行
  • 安全工具 搭建带有 Web 仪表板的Interact.sh
  • 自毁程序密码—阿里聚安全(IDA动态调试)
  • 宠物管理系统(1):Bean设计
  • EMMC , UFS, SSD介绍
  • 如何解决vscode powershell乱码
  • 解决PCL库中pcl::VoxelGrid降采样Bug
  • 鸿蒙项目云捐助第十三讲大模型进行智能问答应用进阶
  • 异步BUCK二极管损耗计算
  • 时空信息平台-API安全措施:上篇(通讯协议的安全措施)
  • 工泰“安全有序·消防护盾”统建统服有序充电新产品发布会成功举办
  • Dubbo 3.x源码(27)—Dubbo服务引用源码(10)subscribeURLs订阅应用级服务url
  • 如何在谷歌浏览器中设置家庭安全
  • harmonyOS组件拥有的状态汇总
  • SpringBoot 3.4.x踩坑记录及解决方案(持续更新)
  • K8s ConfigMap的基础功能介绍
  • 第十五届蓝桥杯Scratch01月stema选拔赛—排序
  • linux-----数据库
  • 机器学习架起了组学科学和植物育种之间的桥梁。
  • 若依启动项目时配置为 HTTPS 协议
  • Redis中的Hot key排查和解决思路