南阳 ACM16 矩形嵌套 动态规划
矩形嵌套
- 描述
- 有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 算法思想:先比较a,b的值,大的放在c[i][0],小的放在c[i][1],然后对c[i][0]进行从小到大的排序.最后利用动态规划来做,dp[i]<dp[j]+1,具体看代码实现:
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,i,j,a,b,x,y,max;
int c[][],dp[];
scanf("%d",&n);
//大的放在c[i][0],小的放在c[i][1];
for(i=;i<n;i++)
{
scanf("%d%d",&a,&b);
c[i][]=a>b?a:b;
c[i][]=a<b?a:b;
}
//把二维数组进行小到大的排序
for(i=;i<n-;i++)
for(j=i+;j<n;j++)
{
if(c[i][]>c[j][])
{
x=c[i][];
c[i][]=c[j][];
c[j][]=x; y=c[i][];
c[i][]=c[j][];
c[j][]=y;
}
}
//利用动态规划来找出最大值
for(i=;i<n;i++)
{
dp[i]=;
for(j=;j<i;j++)
{
if(c[i][]>c[j][]&&c[i][]>c[j][]&&dp[i]<dp[j]+)
dp[i]=dp[j]+;
}
}
max=dp[];
for(i=;i<n;i++)
if(max<dp[i])
max=dp[i];
printf("%d\n",max);
}
return ;
}
南阳 ACM16 矩形嵌套 动态规划的更多相关文章
- CJOJ 1070 【Uva】嵌套矩形(动态规划 图论)
CJOJ 1070 [Uva]嵌套矩形(动态规划 图论) Description 有 n 个矩形,每个矩形可以用两个整数 a, b 描述,表示它的长和宽.矩形 X(a, b) 可以嵌套在矩形 Y(c, ...
- 【动态规划】矩形嵌套 (DGA上的动态规划)
[动态规划]矩形嵌套 时间限制: 1 Sec 内存限制: 128 MB提交: 23 解决: 9[提交][状态][讨论版] 题目描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a, ...
- oj.1677矩形嵌套,动态规划 ,贪心
#include<iostream> #include<algorithm> #include<cstring> using namespace std; stru ...
- NYOJ 16 矩形嵌套(动态规划)
矩形嵌套 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅 ...
- 矩形嵌套-记忆化搜索(dp动态规划)
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 有n个矩形,每个矩形能够用a,b来描写叙述,表示长和宽. 矩形X(a,b)能够嵌套在矩形Y(c,d)中当且仅 ...
- NYOJ16 矩形嵌套(DAG最长路)
矩形嵌套 紫书P262 这是有向无环图DAG(Directed Acyclic Graph)上的动态规划,是DAG最长路问题 [题目链接]NYOJ16-矩形嵌套 [题目类型]DAG上的dp & ...
- nyoj 16 矩形嵌套
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...
- 矩形嵌套(LIS)
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...
- NYOJ - 矩形嵌套(经典dp)
矩形嵌套时间限制:3000 ms | 内存限制:65535 KB 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b< ...
随机推荐
- elasticsearch.yml基本配置说明
一.基本配置 elasticsearch的config文件夹里面有两个配置文 件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是 ...
- 什么是Spring
之前已经学习过web三层(数据库链接层dao,业务逻辑控制层service,用户层web). 在开发过程中,我们不断引入更加优秀的工具的目的都是在安全.高效的基础上,简化开发,和易于维护. 所以引入s ...
- 完美解决Android在listview添加checkbox实现单选多选操作问题
在Android某些开发需求当中,有时候需要在listveiw中加入checkbox实现单选,多选操作.表面上看上去只是改变checkbox那么简单,然而实际开发中,实现起来并不是那么得心应手.尤其当 ...
- mybatis-plus 异常 Invalid bound statement (not found)
最近吧项目中添加使用了mybatis-plus,发现操作sql的时候出现异常: Invalid bound statement (not found) ,异常位置位于mybatis-plus的jar中 ...
- HTTPS与SSL(一)
1. HTTPS HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版 ...
- nc扫描端口
nc -n -v -z -w 1 ip地址 1-1000 (端口号) 详细信息 -v 排除dns -n 不发送任何数据-z 超时设置为1秒 -w 1
- Android商城开发系列(十二)—— 首页推荐布局实现
首页新品推荐的布局效果如下图: 这块布局是使用LinearLayout和GridView去实现,新建recommend_item.xml,代码如下所示: <?xml version=" ...
- Dll注入:注册表注入
在系统中每一个进程加载User32.dll时,会受到DLL_PROCESS_ATTACH通知,当User32.dll对其进行处理时,会取得注册表键值HKEY_LOCAL_MACHINE\Softwar ...
- c++树的表示方法
c++树的节点的表示方法: typedef struct Node *Tree; struct Node { int data; Node *left; Node *right; int flag; ...
- java Vamei快速教程07 包
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经写了一些Java程序.之前的每个Java程序都被保存为一个文件,比如Tes ...