UVALive 7070 The E-pang Palace(暴力)
实话说这个题就是个暴力,但是有坑,第一次我以为相含是不行的,结果WA,我加上相含以后还WA,我居然把这两个矩形的面积加在一块了吗,应该取大的那一个啊……
方法就是枚举对角线,为了让自己不蒙圈,我写了一个矩阵类,可以实现自动判断是否能成功形成矩阵,自动排序四个点,返回面积,方便以后的判断。
C++面向对象大法好……
代码及注释如下:
#include<bits/stdc++.h>
using namespace std;
#define MaxN 55
#define MaxM 222
struct Pos{
int x,y;
void Set(int x1,int y1)
{
x = x1;
y = y1;
}
}p[MaxN];
int isp[MaxM][MaxM],n;
bool cmp(Pos a,Pos b){
if(a.x != b.x) return a.x < b.x;
return a.y < b.y;
}
class Rec{
public:
Pos k[];
int area;
bool Creat(Pos a,Pos b){
k[].x = a.x,k[].y = a.y;
k[].x = b.x,k[].y = b.y;
k[].x = a.x,k[].y = b.y;
k[].x = b.x,k[].y = a.y;
sort(k,k+,cmp);///排序便于判断
area = abs(a.x-b.x)*abs(a.y-b.y);
for(int i = ;i < ;i++){
int tx = k[i].x,ty = k[i].y;
if(isp[tx][ty]==) {
return false;
}
}
return true;
}
};
bool Equal(Pos a,Pos b){
return (a.x==b.x && a.y==b.y);
}
bool All_in(Pos a,Pos b,Pos c){
return (c.x>a.x && c.x<b.x && c.y>a.y && c.y<b.y);
}
bool Part_in(Pos a,Pos b,Pos c){
return (c.x>=a.x && c.x<=b.x && c.y>=a.y && c.y<=b.y);
}
int Check(Rec a,Rec b){
for(int i = ;i < ;i++){///判断重复点
if(Equal(a.k[i],b.k[i])) return ;
}
int tot1 = ,tot2 = ;
for(int i = ;i < ;i++){///先判断是否两个相含
if(All_in(a.k[],a.k[],b.k[i])) tot1++;
if(All_in(b.k[],b.k[],a.k[i])) tot2++;
}
if(tot1 == || tot2 == ) {
return ;
}
for(int i = ;i < ;i++){///不是相含,就必须相离
if(Part_in(a.k[],a.k[],b.k[i])) return ;
if(Part_in(b.k[],b.k[],a.k[i])) return ;
}
return ;
}
int Get_ans(){
int ans = -;
Rec a,b;
for(int i = ;i < n;i++)///枚举对角线
{
for(int j = i+;j < n;j++)
{
if(p[i].x==p[j].x || p[i].y==p[j].y) continue;
if(a.Creat(p[i],p[j]) == false) continue;
for(int k = ;k < n;k++)
{
for(int q = k+;q < n;q++)
{
if(p[k].x==p[q].x || p[k].y==p[q].y) continue;
if(b.Creat(p[k],p[q]) == false) continue;
int c = Check(a,b);
if(c == ) ans = max(ans,a.area+b.area);
if(c == ) ans = max(ans,max(a.area,b.area));
///相含的话,选择较大的面积
}
}
}
}
return ans;
}
int main()
{
// freopen("B.in.cpp","r",stdin);
int x,y;
while(cin>>n && n)
{
memset(isp,,sizeof(isp));
for(int i = ; i < n; i++)
{
cin>>x>>y;
p[i].Set(x,y);
isp[x][y] = ;
}
int ans = Get_ans();
if(ans == -) cout<<"imp"<<endl;
else cout<<ans<<endl;
}
return ;
}
UVALive 7070 The E-pang Palace(暴力)的更多相关文章
- UVALive 7070 The E-pang Palace 暴力
The E-pang Palace Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/problem ...
- 简单几何(判断矩形的位置) UVALive 7070 The E-pang Palace(14广州B)
题目传送门 题意:给了一些点,问组成两个不相交的矩形的面积和最大 分析:暴力枚举,先找出可以组成矩形的两点并保存起来(vis数组很好),然后写个函数判断四个点是否在另一个矩形内部.当时没有保存矩形,用 ...
- UVaLive 6855 Banks (水题,暴力)
题意:给定 n 个数,让你求最少经过几次操作,把所有的数变成非负数,操作只有一种,变一个负数变成相反数,但是要把左右两边的数加上这个数. 析:由于看他们AC了,时间这么短,就暴力了一下,就AC了... ...
- UVALive 2145 Lost in Space(暴力)
题目并不难,就是暴力,需要注意一下输出形式和精度. #include<iostream> #include<cstdio> #include<cmath> usin ...
- The E-pang Palace(暴力几何)
//暴力的几何题,问,n个点可以组成的矩形,不相交,可包含的情况下,最大的面积,还有就是边一定与 x y 轴平行,所以比较简单了 //暴力遍历对角线,搜出所有可能的矩形,然后二重循环所有矩形,判断一下 ...
- UVALive 6862 Triples (找规律 暴力)
Triples 题目链接: http://acm.hust.edu.cn/vjudge/contest/130303#problem/H Description http://7xjob4.com1. ...
- UVALive 7457 Discrete Logarithm Problem (暴力枚举)
Discrete Logarithm Problem 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/D Description ...
- UVALive - 6837 Kruskal+一点性质(暴力枚举)
ICPC (Isles of Coral Park City) consist of several beautiful islands. The citizens requested constru ...
- HDU - 5128The E-pang Palace+暴力枚举,计算几何
第一次写计算几何,ac,感动. 不过感觉自己的代码还可以美化一下. 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5128 题意: 在一个坐标系中,有n个 ...
随机推荐
- MSSQL2008 中文乱码问题 (引自ljg888的专栏)
PHP向MSSQL2008中写入数据,中文乱码 首先:查看SQLserver编码格式的SQL语句为: SELECT COLLATIONPROPERTY('Chinese_PRC_Stro ...
- Python中enumerate()的使用方法
enumerate 函数用于遍历序列中的元素以及它们的下标: >>> for i,j in enumerate(('a','b','c')): print i,j 0 a1 b2 c ...
- hql中的in查询
public List<ShopDianpu> findbymiaosha(long id, List<Object> list) throws Exception { Str ...
- iOS 如何随意的穿插跳跃,push来pop去
OS 如何随意的穿插跳跃,push来pop去 主题思想:如A.B.C.D 四个视图控制器 想要在 A push B 后, B 在push 到 D ,然后从 D pop 到 C ,在从 C pop 的A ...
- Vladik and cards
Vladik and cards time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- mongodb 性能提高之利用索引, 待续
> 10 , 用户无法忍受 >1s , 需要加装中提示 数据库对软件整体影响是不言而喻的, 那么使用 MOngoDB时 该如何提高数据库性能 第一: 索引, 相当于记忆法的 地点桩 1. ...
- 安装redis,以及python如何引用redis
下载 cd /usr/local/src/ wget http://download.redis.io/releases/redis-2.8.17.tar.gz 解压 tar -zxvf redis- ...
- Win7安装mysql数据库、修改默认密码
学习和使用myslq数据库半年时间,mysql对于每一个开发人员都不会陌生.今天对电脑重装系统,为了方面测试在个人PC上安装了mysql数据库.以一下是整个安装过程. 一.下载mysql 1.首先需要 ...
- 转:Web网站性能测试分析及调优实例
1.背景 前段时间,性能测试团队经历了一个规模较大的门户网站的性能优化工作,该网站的开发和合作涉及多个组织和部门,而且网站的重要性不言而喻,同时上线时间非常紧迫,关注度也很高,所以对于整个团队的压力也 ...
- 魅族手机Listview下拉出现hold字样的奇葩问题解决方案
前几天测试在魅族手机上测试,下拉listview,出现奇葩的hold字样,╭∩╮(︶︿︶)╭∩╮,这锅老子不背,但是问题还得解决吧,如下是对于魅族不同版本的出现这种情况的处理: 2.3之前: andr ...