hdu 5128 The E-pang Palace
http://acm.hdu.edu.cn/showproblem.php?pid=5128
题意:给定N个点,选出其中8个点组成两个矩形,使得两个矩形的面积和最大。
思路:找出所有的矩形,然后枚举,挑选求中的两个矩形,判断位置关系,符合条件求出他们的和最大值。坑点:可以内含,内含的时候计算外面的矩形的面积。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int n;
struct node
{
int x,y;
bool operator <(const node &a) const
{
return (x<a.x)||(x==a.x&&y<a.y);
}
} p[],q[],f1[],f2[]; struct node1
{
int num[];
} c[]; int main()
{
//freopen("sss.txt","w",stdout);
while(scanf("%d",&n)!=EOF)
{
if(n==) break; for(int i=; i<=n; i++)
{
scanf("%d %d",&p[i].x,&p[i].y);
}
if(n<)
{
printf("imp\n");
continue;
}
sort(p+,p+n+);
int t1=;
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
if(i==j) continue;
for(int a=; a<=n; a++)
{
if(i==a||j==a) continue;
for(int b=; b<=n; b++)
{
if(i==b||j==b||a==b) continue;
q[]=p[i];
q[]=p[j];
q[]=p[a];
q[]=p[b];
sort(q,q+);
if(q[].x!=q[].x||q[].y!=q[].y||q[].x!=q[].x||q[].y!=q[].y)
{
continue;
}
if(q[].x!=q[].x&&q[].y!=q[].y)
{
c[t1].num[]=i;
c[t1].num[]=j;
c[t1].num[]=a;
c[t1++].num[]=b;
}
}
}
}
}
int ans=-;
for(int i=; i<t1; i++)
{
f1[]=p[c[i].num[]];
f1[]=p[c[i].num[]];
f1[]=p[c[i].num[]];
f1[]=p[c[i].num[]];
sort(f1,f1+);
for(int j=; j<t1; j++)
{
if(i==j) continue;
f2[]=p[c[j].num[]];
f2[]=p[c[j].num[]];
f2[]=p[c[j].num[]];
f2[]=p[c[j].num[]];
sort(f2,f2+);
bool flag=false;
for(int ii=; ii<; ii++)
{
for(int jj=; jj<; jj++)
{
if(p[c[i].num[ii]].x==p[c[j].num[jj]].x&&p[c[i].num[ii]].y==p[c[j].num[jj]].y)
{
flag=true;
break;
}
}
if(flag) break;
}
if(flag) continue;
if(f1[].x<=f2[].x&&f2[].x<=f1[].x&&f2[].y<=f1[].y&&f2[].y>=f1[].y&&f2[].x>=f1[].x)
{
continue;
}
if(f1[].x<=f2[].x&&f2[].x<=f1[].x&&f2[].y<=f1[].y&&f2[].y>=f1[].y&&f2[].x>=f1[].x)
{
continue;
}
if(f1[].x>=f2[].x&&f1[].x<=f2[].x&&f1[].y<=f2[].y&&f1[].y>=f2[].y&&f1[].x>=f2[].x)
{
continue;
}
if(f1[].x>=f2[].x&&f1[].x<=f2[].x&&f1[].y<=f2[].y&&f1[].y>=f2[].y&&f1[].x>=f2[].x)
{
continue;
}
if(f1[].x<=f2[].x&&f2[].x<=f1[].x&&f2[].y<=f1[].y&&f2[].y>=f1[].y&&f2[].y<=f1[].y)
{
continue;
}
if(f1[].x<=f2[].x&&f2[].x<=f1[].x&&f2[].y>=f1[].y&&f2[].y<=f1[].y&&f2[].y>=f1[].y)
{
continue;
}
if(f2[].x<=f1[].x&&f1[].x<=f2[].x&&f1[].y<=f2[].y&&f1[].y>=f2[].y&&f1[].y<=f2[].y)
{
continue;
}
if(f2[].x<=f1[].x&&f1[].x<=f2[].x&&f1[].y>=f2[].y&&f1[].y<=f2[].y&&f1[].y>=f2[].y)
{
continue;
}
int s=-;
if(f1[].x>f2[].x&&f1[].x<f2[].x&&f1[].y>f2[].y&&f1[].y<f2[].y)
{
s=(f2[].y-f2[].y)*(f2[].x-f2[].x);
}
else if(f2[].x>f1[].x&&f2[].x<f1[].x&&f2[].y>f1[].y&&f2[].y<f1[].y)
{
s=(f1[].y-f1[].y)*(f1[].x-f1[].x);
}
else
s=(f1[].y-f1[].y)*(f1[].x-f1[].x)+(f2[].y-f2[].y)*(f2[].x-f2[].x);
ans=max(ans,s);
}
}
if(ans==-) printf("imp\n");
else
printf("%d\n",ans);
}
return ;
}
hdu 5128 The E-pang Palace的更多相关文章
- HDU 5128 The E-pang Palace(2014广州赛区现场赛B题 计算几何)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5128 解题报告:在一个平面上给出n个点的坐标,用这n个点作为矩形的四个顶点,作两个矩形,要求两个矩形不 ...
- hdu - 5128 The E-pang Palace(枚举+计算几何)
http://acm.hdu.edu.cn/showproblem.php?pid=5128 给出n个点,求n个点组成两个矩形的最大面积. 矩形必须平行x轴,并且不能相交,但是小矩形在大矩形内部是可以 ...
- hdu 5129 (枚举) The E-pang Palace
题目;http://acm.hdu.edu.cn/showproblem.php?pid=5128. 给你n个点,问能否组成两个不相交的与坐标轴平行的矩形,能就输出两矩形的面积和,不能就输出一个字符串 ...
- HDU 5128.The E-pang Palace-计算几何
The E-pang Palace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Othe ...
- HDU 5218 The E-pang Palace (简单几何—2014广州现场赛)
题目链接:pid=5128">http://acm.hdu.edu.cn/showproblem.php? pid=5128 题面: The E-pang Palace Time Li ...
- HDU - 5128The E-pang Palace+暴力枚举,计算几何
第一次写计算几何,ac,感动. 不过感觉自己的代码还可以美化一下. 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5128 题意: 在一个坐标系中,有n个 ...
- HDU 4435 charge-station () bfs图论问题
E - charge-station Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- HDU 4435 charge-station bfs图论问题
E - charge-station Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- HDU 5025:Saving Tang Monk(BFS + 状压)
http://acm.hdu.edu.cn/showproblem.php?pid=5025 Saving Tang Monk Problem Description <Journey to ...
随机推荐
- HBase开发错误记录(一):java.net.UnknownHostException: unknown host: master
windows下开发HBase应用程序.HBase部署在linux环境中, 在执行调试时可能会出现无法找到主机,类似异常信息例如以下: java.net.UnknownHostException: u ...
- [AngularJS + Webpack] Requiring Templates
With Angular, most of the time you're specifying a templateUrl for your directives and states/routes ...
- SQLLite 简介
[1] SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内 ...
- Android 6.0 双卡拨号
相关 api getCallCapablePhoneAccountsAdded in API level 23 Android 5.0 之前的版本 Call from second sim 获取 si ...
- jQuery作用
jquery是前端里面比较总要的,是很强大的一个选择器. 表单: 1.$(":input") 查找所有的input元素 2.$("text") 匹配所有的 ...
- 什么是php命名空间
php命名空间是在5.3版本后加入的,命名空间反过来就是空间命名,在这里的空间命名就像window下的文件夹命名,命名空间用关键字namespace来定义.在这里用文件夹举三个例子,比如相对于test ...
- 阿里云服务器如何安装memcached
方法/步骤 1 使用Xshell登陆阿里云服务器. 请使用root帐号登陆.下面的操作全部在home目录里执行 2 安装libevent. 输入命令 yum -y install libevent-d ...
- c#中使用数据读取器读取查询结果
今天有时间了. 在看<c#数据库入门经典> ,总结数据读取器查询结果. 针对单个结果集使用读取器,有3中方法: String connString =..; String sql =@&q ...
- SQL SERVER 查看死锁的存储过程
end
- cocos2d-x学习之类型转换(转)
在做数据转换时,最好包含以下头文件 #include <iostream> #include <cmath> #include <string> #include ...