[ACM_动态规划] 嵌套矩形
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 1000+5 class Rect{
public:
int length;
int width;
};
bool ok(Rect& a,Rect& b){ //嵌套关系判定函数
return (a.length<b.length && a.width<b.width)
||(a.length<b.width && a.width<b.length);
} int d[maxn],n,map[maxn][maxn]; //d[]用来存储以i结尾的最大长度,map[i][j]表示i可嵌套在j中
Rect rect[maxn]; int dfs(int cur) //深搜,记忆化搜索
{
if( d[cur] > ) return d[cur];//已经找过的直接输出
d[cur] = ; //没找的先付初值1,然后深搜寻找
for(int i=;i<=n;i++)
{
if( map[cur][i] && d[cur] < dfs(i)+)
{
d[cur] = dfs(i)+;
}
}
return d[cur];
}
void out(int i) //反向追踪找到选取图形的标号
{
cout << i << " ";
for(int j=;j<=n;j++)
{
if( map[i][j] && d[i] == d[j]+)
{
out(j);
break;
}
}
} int main(){ for(;cin>>n && n;){ int i,j; for(i=;i<=n;i++){ //输入
cin>>rect[i].length>>rect[i].width;
} memset(map,,sizeof(map)); //构造一个嵌套关系的邻接矩阵
for(i=;i<=n;i++)
for(j=;j<=n;j++)
if(ok(rect[i],rect[j]))
map[i][j]=; memset(d,,sizeof(d)); //深搜记忆化完成d[]表
for(i=;i<=n;i++){
dfs(i);
} int max=,ds; //找出d[]的最大值并用ds存储尾链位置
for(i=;i<=n;i++){
if(max<d[i]){
max=d[i];
ds=i;
}
} cout<<max<<'\n';
out(ds);cout<<'\n';
}
}
[ACM_动态规划] 嵌套矩形的更多相关文章
- DAG上的动态规划---嵌套矩形(模板题)
一.DAG的介绍 Directed Acyclic Graph,简称DAG,即有向无环图,有向说明有方向,无环表示不能直接或间接的指向自己. 摘录:有向无环图的动态规划是学习动态规划的基础,很多问题都 ...
- DAG上的动态规划之嵌套矩形
题意描述:有n个矩形,每个矩形可以用两个整数a.b描述,表示它的长和宽, 矩形(a,b)可以嵌套在矩形(c,d)当且仅当a<c且b<d, 要求选出尽量多的矩形排成一排,使得除了最后一个外, ...
- 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, ...
- HDOJ-1069(动态规划+排序+嵌套矩形问题)
Monkey and Banana HDOJ-1069 这里实际是嵌套矩形问题的变式,也就是求不固定起点的最长路径 动态转移方程为:dp[i]=max(dp[j]+block[i].h|(i,j)∈m ...
- NYOJ16|嵌套矩形|DP|DAG模型|记忆化搜索
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...
- P1375 嵌套矩形
题目Problem 嵌套矩形 Time Limit: 1000ms Memory Limit: 131072KB 描述Descript. 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形 ...
- 嵌套矩形——DAG上的动态规划
有向无环图(DAG,Directed Acyclic Graph)上的动态规划是学习动态规划的基础.非常多问题都能够转化为DAG上的最长路.最短路或路径计数问题. 题目描写叙述: 有n个矩形,每一个矩 ...
- 02_嵌套矩形(DAG最长路问题)
来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题2: 问题描述:有n个矩形,每个矩形可以用两个整数a,b描述,表示它们的长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中的条件 ...
随机推荐
- fuse入门
参考1 http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/html/running.html 参考2 http://www.maastaar.net/fus ...
- 华硕U303L通过U盘装系统
开机,按esc,进入bios,选择security,将secure boot control设置为disable. 在boot下,将launch csm 改为enable,按F10保存退出,重启. ...
- 从Elo Rating System谈到层次分析法
1. Elo Rating System Elo Rating System对于很多人来说比较陌生,根据wikipedia上的解释:Elo评分系统是一种用于计算对抗比赛(例如象棋对弈)中对手双方技能水 ...
- OD使用教程11
首先把安装好的软件拖入PEID,看看它是用什么语言写的 然后用OD载入程序,查找关键字,步骤看上一个笔记 双击到达代码处,发现这在一个跳转里面.可能第一反应是修改跳转,经试验后发现这是没用的所以 ...
- JavaScript常用函数之Eval()使用
eval() 功能:首先解释Javascript代码 然后执行它 用法:Eval(codeString) codeString是包含有javascript语句的字符串,在eval之后使用Javasc ...
- SQL Server 查出未提交事务(长事务)SQL
),value )); INSERT INTO @tab EXEC('DBCC OPENTRAN WITH TABLERESULTS'); SELECT name,CAST(value AS DATE ...
- linux修改主机名的方法
linux修改主机名的方法 用hostname命令可以临时修改机器名,但机器重新启动之后就会恢复原来的值. #hostname //查看机器名#hostname -i //查看本机器名对应的ip ...
- H3C qos 简单配置
qos 有三种服务模型 Best-Effort service(尽力而为服务模型) Integrated service(综合服务模型,简称Int-Serv) Differentiated servi ...
- Tomcat settings should be set in Tomcat Preference Page解决
选择tomcat version,然户找到该tomcat的主目录,输入在tomcat home,下面的参数会自动配置,点击apply. 然后在左边选择advanced,同样把tomcat的主目录复制在 ...
- C# interface
我们学习了interface,即接口,其与抽象类有点像,但是他们也有一些区别,比如类不能多重继承但是接口却可以多重继承. 接口只包含方法.委托或事件和属性的签名(接口包含的成员).不能包含字段(因为字 ...