嵌套矩形问题
来源:互联网 发布:mac美国官网海淘 编辑:程序博客网 时间:2024/06/05 07:23
从今天开始,准备刷第9章动态规划的题目,先刷上10天左右吧,能刷多少是多少,剩下的以后再战。
嵌套矩形问题,先建图,如果两个矩形可以嵌套,连一条边。建完图后,记忆化搜索,状态转移方程是 d(i)=max{ d(j)+1} (i,j)有边,d(i)表示以i为结束的最长路。这是一种解法。
还有一种方法是先给矩形排序,再找一条单调递增上升最长子序列就可以了。也比较容易实现
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<string>#include<vector>#include<stack>#include<queue>#include<deque>#define LL long longusing namespace std;const int maxn=1005;int G[102][102],d[maxn],a[102],n,b[102];;int dp(int i){ int& ans=d[i]; if(ans>0) return ans; ans=1; for(int j=1;j<=n;j++){ if(G[i][j]) ans=max(ans,dp(j)+1); } return ans;}int main(){ int T; cin>>T; while(T--){ cin>>n; memset(d,0,sizeof(d)); memset(G,0,sizeof(G)); for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if((a[i]>a[j]&&b[i]>b[j])||(a[i]>b[j]&&b[i]>a[j])) G[i][j]=1; } } int ans=1; for(int i=1;i<=n;i++) ans=max(dp(i),ans); printf("%d\n",ans); } return 0;}
0 0
- 矩形嵌套问题
- 嵌套矩形问题
- 嵌套矩形问题
- 嵌套矩形问题
- 嵌套矩形问题
- 矩形嵌套问题-ACM集训
- DAG问题之矩形嵌套
- NYOJ的矩形嵌套问题
- hpu 问题 I: 矩形嵌套问题
- DAG模型—嵌套矩形问题
- 动态规划——矩形嵌套问题
- HPUoj 1084: 矩形嵌套问题( DAG/LIS
- 矩形嵌套
- 矩形嵌套
- 矩形嵌套
- 矩形嵌套
- 矩形嵌套
- 嵌套矩形
- 读取android根目录下的文件或文件夹
- 设计模式学--依赖倒置原则
- 项目35.5 在北京买房
- java 面试题三十二 mysql查询面试题
- 禁用cookie后session是如何设置的
- 嵌套矩形问题
- requireJS config.js
- Android中应用程序获得系统签名权限
- Windows10 Adaptive Code
- 【总结】Android开发中遇到的各种坑
- 从telnet www.baidu.com 80来玩一下http
- 【算法】最大子段和问题
- 向textview文本中加载图片
- 使用AIDL完成一次简单的Android进程间通信