【解题报告】嵌套矩形
来源:互联网 发布:只有淘宝网页打不开 编辑:程序博客网 时间:2024/06/05 22:44
#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>#include<cstring>using namespace std;///////////////////////////////int n,ans=0;int a[1000],b[1000];int f[1000+10]={0};//f[i]表示从i点出发的最长路int g[1000+10]={0};//g[i]表示从i点出发的最短路int map[1000+10][1000+10]={0}; //判断2个矩形是否存在可镶嵌的关系【有向图】 ///////////////////////////////int dp(int i){if(f[i])return f[i];//记忆化搜索//如果当前情况已访问过直接返回 f[i]=1;//未尝试,赋初值 for(int j=1;j<=n;j++) { if(map[i][j])f[i]=max(f[i],dp(j)+1); //状态转移方程 }return f[i];}/////////////////////////////// void print(int i)//输出从i开始 {cout<<i<<' ';for(int j=1;j<=n;j++) if(map[i][j]&&f[i]==f[j]+1)//如果i能嵌套在j内,输出i后面的矩形 { print(j); break; }}////////////////////////////////int main(){scanf("%d",&n);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]))map[i][j]=1; }//判断图是否存在,是否可以镶嵌 for(int i=1;i<=n;i++)f[i]=dp(i);//尝试每个矩形镶嵌 for(int i=1;i<=n;i++)if(ans<f[i])ans=f[k=i];//找出最大的f[i],并记录结点号k printf("%d\n",ans);print(k);return 0; }
1 0
- 【解题报告】嵌套矩形
- 【Jason's_ACM_解题报告】矩形嵌套(NYOJ16)
- 【ACM菜逼解题报告】矩形嵌套(NYOJ16)
- [Astar2015]矩形面积解题报告
- hihocoder 1040 矩形判断解题报告
- 蓝桥杯 回型嵌套 递归 解题报告
- Leetcode 84. Largest Rectangle in Histogram 最大矩形 解题报告
- Leetcode 85. Maximal Rectangle 最大矩形 解题报告
- Leetcode 391. Perfect Rectangle 完美矩形 解题报告
- 【解题报告】POJ1151 扫描线+线段树(矩形求并)
- 矩形嵌套
- 矩形嵌套
- 矩形嵌套
- 矩形嵌套
- 矩形嵌套
- 嵌套矩形
- 嵌套矩形
- 嵌套矩形
- Voluntarily Relinquishing the Processor-----《Pro_Java_8_Programming_(3rd_edition)》
- spring aop 实现原理简述——背景知识
- ios中图片不显示的问题
- NIO缓存区(2)之Buffer
- csdn MarkDown 使用小记
- 【解题报告】嵌套矩形
- Nim语言中的解析表达文法 pegs模块
- 73. Valid Parentheses
- 使用python发送邮件
- js脚本三种实现字符串连接方法
- java是如何管理内存的
- kafka-zookepeper
- NIO缓冲区(3)之分散(Scatter)/聚集(Gather)、通道之间的数据传输和选择器(Selector)
- ios关于retainCount的一些疑问