矩形嵌套

时间限制: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<stdio.h>
#include<string.h>
int main()
{
int t,l1,l2,l3,sum,n;
int i,j,m;
int a[],b[],c[],d[];
scanf("%d",&t);
while(t--)
{sum=;memset(d,,sizeof(d));
scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%d %d",&a[i],&b[i]);
if(a[i]>b[i])
{m=a[i];a[i]=b[i];b[i]=m;}
c[i]=a[i]*b[i];
}
for(j=;j<n-;j++)
for(i=;i<n--j;i++)
{
if(c[i]>c[i+])//按照面积先进行排序
{
int x=c[i];c[i]=c[i+];c[i+]=x;
int y=a[i];a[i]=a[i+];a[i+]=y;
int z=b[i];b[i]=b[i+];b[i+]=z;
}
if(c[i]==c[i+])
{
if(b[i]>b[i+])如果面积相同的,按照长进行排序
{
int x=c[i];c[i]=c[i+];c[i+]=x;
int y=a[i];a[i]=a[i+];a[i+]=y;
int z=b[i];b[i]=b[i+];b[i+]=z;
}
}
}
// for(i=0;i<n;i++)
// printf("%d %d %d\n",a[i],b[i],c[i]);//
for(i=;i<n;i++)
{sum=;
for(j=;j<i;j++) if(c[j]>c[j-])
{
if((a[i]>a[j] && b[i]>b[j]) && d[j]+>d[i])
{
d[i]=d[i]+;//贪心法,的累加
}
}
if(d[i]>sum)
sum=d[i];
}
printf("%d\n",sum+);
}
return ;
}
解法二:直接按照长进行排序
 #include"stdio.h"
#define M 1024
main(){
int m,n,t,i,j,x;
float
a[M],b[M];
scanf("%d",&m);
for(x=;x<m;x++){
int
c[M]={};
scanf("%d",&n);
for(i=;i<=n-;i++){
scanf("%f
%f",&a[i],&b[i]);
if(a[i]<b[i]){
t=b[i];
b[i]=a[i];
a[i]=t;}
}
for(i=;i<n-;i++){
for(j=;j<n-i-;j++)
if(a[j]>a[j+]){
t=a[j];
a[j]=a[j+];
a[j+]=t;
t=b[j];
b[j]=b[j+];
b[j+]=t;
}}
for(i=;i<n-;i++)
for(j=i+;j<n;j++)
{
if(b[j]>b[i]&&a[i]<a[j]){
if(c[j]<(c[i]+))
c[j]=c[i]+;
}
}
for(i=;i<n-;i++)
if(c[i]>c[i+])
c[i+]=c[i];
c[i]++;
if(n<=)c[i]=;
printf("%d\n",c[i]);
}}

ny16 矩形嵌套的更多相关文章

  1. NYOJ16 矩形嵌套(DAG最长路)

    矩形嵌套 紫书P262 这是有向无环图DAG(Directed Acyclic Graph)上的动态规划,是DAG最长路问题 [题目链接]NYOJ16-矩形嵌套 [题目类型]DAG上的dp & ...

  2. nyoj 16 矩形嵌套

    矩形嵌套 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...

  3. NYOJ 16 矩形嵌套(动态规划)

    矩形嵌套 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅 ...

  4. 矩形嵌套(LIS)

    矩形嵌套 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...

  5. NYOJ - 矩形嵌套(经典dp)

    矩形嵌套时间限制:3000 ms | 内存限制:65535 KB 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b< ...

  6. 矩形嵌套(dp)

    矩形嵌套 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...

  7. NYOJ 16 矩形嵌套(经典DP)

    http://acm.nyist.net/JudgeOnline/problem.php?pid=16 矩形嵌套 时间限制:3000 ms  |           内存限制:65535 KB 难度: ...

  8. 【动态规划】矩形嵌套 (DGA上的动态规划)

    [动态规划]矩形嵌套 时间限制: 1 Sec  内存限制: 128 MB提交: 23  解决: 9[提交][状态][讨论版] 题目描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a, ...

  9. nyoj 题目16 矩形嵌套

    矩形嵌套 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...

随机推荐

  1. 算法笔记_186:历届试题 高僧斗法(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 古时丧葬活动中经常请高僧做法事.仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛. 节目大略步骤为:先用粮食(一般是稻米)在地 ...

  2. C++使用hiredis连接带密码的redis服务

    c = redisConnect((char*)redis_host, redis_port); if (c->err) { /* Error flags, 0 when there is no ...

  3. git检查与放弃本地的代码修改情况

    git diff  可以查看当前没有add 的内容修改(不在缓冲区的文件变化) git diff --cached查看已经add但没有commit 的改动(在缓冲区的文件变化) git diff HE ...

  4. Bootstrap系列 -- 15. 下拉选择框select【转发】

    <form role="form"> <div class="form-group"> <select class="f ...

  5. 整理两个JVM博客集合,空闲时候可以看

    纯洁的微笑写的:https://www.cnblogs.com/ityouknow/p/5614961.html 集合:http://www.cnblogs.com/ityouknow/categor ...

  6. 使用免费ip代理进行投票

    只要是投票系统,必然要限制一个用户投多张票. 如何限制呢?限制ip是最直观最简单的思路,可是代理池可以解决限制ip的情况. 如果投票页面前面加上一个验证码,那程序就会有点困难了. 有些投票使用微信号, ...

  7. 【LeetCode】150. Evaluate Reverse Polish Notation

    Evaluate Reverse Polish Notation Evaluate the value of an arithmetic expression in Reverse Polish No ...

  8. Android快速开发不可或缺的11个工具类(下载)

    功能分类:工具     支持平台:Android     运行环境:Eclipse 开发语言:Java      开发工具:Eclipse         源码大小:11.45KB   下载地址:ht ...

  9. WCF中可以使用SVCUtil.exe生成客户端代理类和配置文件

    1.找到如下地址“C:\Windows\System32\cmd.exe”  命令行工具,右键以管理员身份运行(视系统是否为win7 而定)         2.输入如下命令: C:\>cd C ...

  10. RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)[转]

    上篇文章中,我们把每个Message都是deliver(提供)到某个Consumer.在这篇文章中,我们将会将同一个Message deliver(提供)到多个Consumer中.这个模式也被成为 & ...