uva 1312 一个矩形中的最大的子矩形(其中不能包含某些点)
来源:互联网 发布:第一个程序员名字 编辑:程序博客网 时间:2024/05/17 20:00
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int p,q,l,n,w,h;struct node{int x,y;node(int a=0,int b=0):x(a),y(b){}}t[160];bool cmpx(const node &a,const node &b){return a.x==b.x?a.y<b.y:a.x<b.x;}bool cmpy(const node &a,const node &b){return a.y==b.y?a.x<b.x:a.y<b.y;}void solve(){p=q=l=0;sort(t,t+n,cmpx);for(int i=0;i<n;i++){int m1=0,m2=h;for(int j=i+1;j<n;j++){int ll=min(t[j].x-t[i].x,m2-m1);if(ll>l){l=ll;p=t[i].x;q=m1;}if(t[i].x == t[j].x) continue;if(t[j].y > t[i].y) m2=min(m2,t[j].y);else m1=max(m1,t[j].y);}}sort(t,t+n,cmpy);for(int i=0;i<n;i++){int m1=0,m2=w;for(int j=i+1;j<n;j++){int ll=min(t[j].y-t[i].y,m2-m1);if(ll>l){l=ll;p=m1;q=t[i].y;}if(t[i].y == t[j].y) continue;if(t[j].x > t[i].x) m2=min(m2,t[j].x);else m1=max(m1,t[j].x);}}}int main(){int T,t1;scanf("%d",&T);while(T--){scanf("%d%d%d",&n,&w,&h);for(int i=0;i<n;i++)scanf("%d%d",&t[i].x,&t[i].y);t[n++]=node(0,0);t[n++]=node(w,0);t[n++]=node(0,h);t[n++]=node(w,h);solve();if(t1++) printf("\n");printf("%d %d %d\n",p,q,l);}}
阅读全文
0 0
- uva 1312 一个矩形中的最大的子矩形(其中不能包含某些点)
- uva 10827 求和最大可延伸的子矩形
- 一个矩形是否包含一个点
- uva 10827 球面最大子矩形
- 直方图包含最大矩形
- 最大子矩形
- 【最大子矩形】糖果盒
- 【最大子矩形】面积
- 【最大子矩形】面积
- 二维图中找最大子矩形的四道题
- 矩形子数组的最大和
- uva 12307(点集的外接矩形)
- 直方图中的最大矩形
- 【java学习记录】7.定义一个接口ArearInterface,其中包含一个方法,计算面积三角形、矩形、圆形的面积
- 在一个只包含0,1的二维数组中找到最大矩形的面积
- 【最大子矩形】棋盘制作
- 最大子矩形(SOJ3329)
- hdu 1506 最大子矩形
- hdu-2157-How many ways??【矩阵快速幂】
- HDU 4417 主席树
- HDU-4587 TWO NODES(割点变形或者求点双连通分量)
- 51Nod 1183 编辑距离(DP—编辑距离问题)
- 13个Linux常用命令行
- uva 1312 一个矩形中的最大的子矩形(其中不能包含某些点)
- 10.1解题报告
- UGUI如何实现图片动态变换?
- ZooKeeper(4)Java API
- office-word使用技巧——查找&替换
- SSH框架下,使用FormData对象提交表格的内容(前端+后台代码)
- Oracle数据库中的多表查询
- poj 1753 : Flip Game (枚举+dfs)
- C++语言与思想介绍