DAG模型简单题
来源:互联网 发布:sql查询字段长度限制 编辑:程序博客网 时间:2024/05/22 06:33
【题意】
有n个矩形,每个矩形都有长和宽,表示为a和b
矩形X(a,b)可以镶嵌在矩形Y(c,d)中当且仅当a<c , b<d 或者 a<d , b<c (相当于把矩形X旋转90°)
求出能嵌套在一个里面的最多数
【思路】
这是DP里的一种,先排序,在搜的时候记录深度,当找到可以嵌套的矩形时直接返回值
时间复杂度为O(n*n)
矩形的长和宽按照长>宽排列
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct point{ int x,y;} p[100];int dp[100];int cmp(point a,point b){ if(a.x==b.x) return a.y<b.y; return a.x<b.x;}int main(){ int n; freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); while(cin>>n) { memset(p,0,sizeof(p)); for(int i=0; i<n; i++) { cin>>p[i].x>>p[i].y; if(p[i].x>p[i].y) swap(p[i].x,p[i].y); } sort(p,p+n,cmp); int ans=0; memset(dp,0,sizeof(dp)); for(int i=0; i<n; i++) { for(int j=0; j<i; j++) { if(p[j].x<p[i].x&&p[j].y<p[i].y) { dp[i]=max(dp[i],dp[j]+1);//状态转移方程(使得一个一个递增找最大值) } } if(dp[i]==0)dp[i]=1; ans=max(ans,dp[i]); } printf("%d\n",ans); } return 0;}
0 0
- DAG模型简单题
- DAG模型
- DAG模型
- DAG模型 矩形嵌套
- DAG模型硬币问题
- DAG模型-嵌套矩阵
- dp(DAG模型)
- DAG模型的动态规划
- DAG 模型小讲 【 理解 + 例题 】
- NYOJ16 矩形嵌套 (DAG模型_dp)
- 嵌套模型(DAG上的动态规划
- 动态规划 DAG模型 硬币问题
- DAG模型—嵌套矩形问题
- DAG模型——硬币问题
- DAG模型的动态规划学习
- DP<DAG模型的最短路>
- DAG
- DAG
- hdu 1007最近点对
- Linux服务器安装jdk和tomcat
- hdu 1285(拓扑排序)
- 第十一周 项目一 存储班长信息的学生类(1)
- HDU 1.2.5 GPA(ACM step)
- DAG模型简单题
- Pow(x, n) - LeetCode 50
- 第十一周 阅读程序4 类的继承构造函数与析构函数调用的先后顺序
- uva465 overflow
- 日常所遇
- 文章标题
- UVA 10465 - Homer Simpson(贪心-考察代码能力哦)
- 第十二周项目四 点、圆的关系-(3)求点与圆心的连线在圆上的交点
- 狂欢过后是孤单