HPUoj 1084: 矩形嵌套问题( DAG/LIS
来源:互联网 发布:java软件工程师证书 编辑:程序博客网 时间:2024/04/28 06:19
1084: 矩形嵌套问题
Description
有n个矩形,每个矩形可以用两个整数a,b描述,表示它的长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a
Input
每组测试数据的第一行是一个正整数n,表示该组测试数据中含有矩形的个数(n<=1000)
随后的n行,每行有两个数a,b(0
Output
每组测试数据都输出一个数,表示最多符合条件的矩形数目,每组输出占一行
Sample Input
101 22 45 86 107 93 15 812 109 72 2
Sample Output
5
题解:
经典DAG模型
当然用LIS更容易TAT
AC代码
DAG
#include <bits/stdc++.h>using namespace std;#define LL long long#define CLR(a,b) memset(a,(b),sizeof(a))const int N = 1e3+5;int G[N][N];int dp[N];int arr[N], brr[N];int n;int solve(int i){ int& ans = dp[i]; //引用 也就是 ans相当于dp[i] if(ans > 0) return ans; // 记忆化搜索 ans = 1; for(int j = 1; j <= n; j++) { if(G[i][j]) { ans = max(ans,solve(j)+1); } } return ans;}//void print_ans(int i) // 字典序最小方法//{//// for(int j = 1; j ,+ n; j++) {// if(v[i][j] && dp[i]==dp[j]+1) {// print_ans(j); break;// }// }//}int main(){ while(~scanf("%d",&n)) { for(int i = 1;i <= n; i++) { scanf("%d%d",&arr[i],&brr[i]); //arr[i]为长 if(arr[i] < brr[i]) swap(arr[i],brr[i]); } //建图 V[i][j]表示i可以嵌套在里面 //dp[i] 表示 从节点i出发可以到达的最大路径 dp[i] = max(dp[i],dp[j]+1) CLR(G,0); CLR(dp,0); for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(arr[i]<arr[j] && brr[i]<brr[j]) { G[i][j] = 1; } } } int res, ans = 0; for(int i = 1; i <= n; i++) { if(solve(i) > ans) { ans = dp[i]; res = i; } } printf("%d\n",ans);// print_ans(res);// printf("\n"); }return 0;}
LIS
#include <bits/stdc++.h>using namespace std;#define LL long long#define CLR(a,b) memset(a,(b),sizeof(a))const int N = 1e3+10;int dp[N];struct node { int a, b;}p[N];bool cmp(node x,node y){ if(x.b != y.b) return x.b < y.b; return false;}int main(){ int n; while(~scanf("%d",&n)) { for(int i = 1; i <= n; i++) { scanf("%d%d",&p[i].a,&p[i].b); if(p[i].a < p[i].b) swap(p[i].a,p[i].b); dp[i] = 1; } sort(p+1,p+1+n,cmp); int ans, k = 1; for(int i = 2; i <= n; i++) { ans = 0; for(int j = 1; j < i; j++) { if(p[i].a>p[j].a && p[i].a>p[j].a) { ans = max(dp[j],ans); } } dp[i] = ans+1; k = max(dp[i],k); } printf("%d\n",k); }return 0;}
阅读全文
0 0
- HPUoj 1084: 矩形嵌套问题( DAG/LIS
- DAG问题之矩形嵌套
- DAG模型—嵌套矩形问题
- DAG模型 矩形嵌套
- 矩形嵌套 DAG
- NYOJ 16 矩形嵌套 【DAG模型——嵌套矩形问题】
- NYOJ16 矩形嵌套 (DAG模型_dp)
- 矩形嵌套-DAG上的动态规划
- NYoj16 矩形嵌套 DAG上的Dp
- DAG上的动态规划--嵌套矩形
- 矩形嵌套(最小字典序)—DAG动态规划问题
- NYOJ16-矩形嵌套(DAG图动态规划)
- 嵌套矩形 DAG上的动态规划 算法入门经典
- 嵌套矩形 DAG上的dp(深搜+dp)
- 嵌套矩形——DAG上的动态规划
- 嵌套矩形——DAG上的动态规划
- ACM:DAG上的动态规划------嵌套矩形
- DAG上的DP之 —— 矩形嵌套
- 消息推送原理以及实现过程
- Spring Cloud Zuul 的 route 运行机制分析
- 二叉树的前序、中序、后序遍历
- threeSumClosest
- MySQL配置文件my.cnf参数优化和中文详解
- HPUoj 1084: 矩形嵌套问题( DAG/LIS
- ApplicationEvent和ApplicationListener的使用
- yii2使用hasOne联查的数据,同样实现在列表中的排序功能
- RocketMQ与Kafka对比(18项差异)
- liunx配置tomcat服务器 并部署web项目
- JS事件初试-贪吃蛇小游戏
- java8 & lambda表达式
- Oil Deposits 石油储藏HDU
- 被大家“说烂”的快速原型设计其实是这样的