博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYOJ - 矩形嵌套(经典dp)
阅读量:5314 次
发布时间:2019-06-14

本文共 1028 字,大约阅读时间需要 3 分钟。

 

矩形嵌套

时间限制:3000 ms | 内存限制:65535 KB

描述 有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问题,分两步来解决,将数据排序,得到一个递增的序列,进而将问题转化为最长递增子序列问题。。。

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 7 const int maxn = 1010; 8 struct ans{ 9 int x,y;10 } a[maxn];11 int dp[maxn];12 13 bool cmp(struct ans a,struct ans b){14 if(a.x
>n;31 while(n--){32 cin>>m;33 for( int i=0; i
>a[i].x>>a[i].y;35 if(a[i].x>a[i].y){36 int tmp=a[i].x;37 a[i].x=a[i].y;38 a[i].y=tmp;39 }40 }41 sort(a,a+m,cmp);42 cout<

 

转载于:https://www.cnblogs.com/Bravewtz/p/10389662.html

你可能感兴趣的文章
管道,数据共享,进程池
查看>>
CSS
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
程序集的混淆及签名
查看>>
判断9X9数组是否是数独的java代码
查看>>
00-自测1. 打印沙漏
查看>>
UNITY在VS中调试
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
Scala入门(1)Linux下Scala(2.12.1)安装
查看>>
如何改善下面的代码 领导说了很耗资源
查看>>
Quartus II 中常见Warning 原因及解决方法
查看>>
php中的isset和empty的用法区别
查看>>
Android ViewPager 动画效果
查看>>
pip和easy_install使用方式
查看>>
博弈论
查看>>
Redis sentinel & cluster 原理分析
查看>>
我的工作习惯小结
查看>>
把word文档中的所有图片导出
查看>>
浏览器的判断;
查看>>