The E-pang Palace(暴力几何)

//暴力的几何题,问,n个点可以组成的矩形,不相交,可包含的情况下,最大的面积,还有就是边一定与 x y 轴平行,所以比较简单了
//暴力遍历对角线,搜出所有可能的矩形,然后二重循环所有矩形,判断一下,输出最大即可
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
#define MX 35
struct Mat
{
int a,b,c,d;
int area;
}mat[]; int n;
int x[MX];
int y[MX];
int G[][]; int check(int u,int v)
{
int xxx = min(min(x[mat[u].a],x[mat[u].b]),min(x[mat[u].c],x[mat[u].d]));
int xxy = min(min(y[mat[u].a],y[mat[u].b]),min(y[mat[u].c],y[mat[u].d]));
int ddx = max(max(x[mat[u].a],x[mat[u].b]),max(x[mat[u].c],x[mat[u].d]));
int ddy = max(max(y[mat[u].a],y[mat[u].b]),max(y[mat[u].c],y[mat[u].d])); int xx = min(min(x[mat[v].a],x[mat[v].b]),min(x[mat[v].c],x[mat[v].d]));
int xy = min(min(y[mat[v].a],y[mat[v].b]),min(y[mat[v].c],y[mat[v].d]));
int dx = max(max(x[mat[v].a],x[mat[v].b]),max(x[mat[v].c],x[mat[v].d]));
int dy = max(max(y[mat[v].a],y[mat[v].b]),max(y[mat[v].c],y[mat[v].d])); if (xxx>dx||xxy>dy||ddx<xx||ddy<xy)//在 右上左下
return mat[v].area+mat[u].area; if (xxx>xx&&ddx<dx&&xxy>xy&&ddy<dy)//包含
return max(mat[v].area,mat[u].area);
if (xxx<xx&&ddx>dx&&xxy<xy&&ddy>dy)
return max(mat[v].area,mat[u].area); return ;
} int main()
{
while (scanf("%d",&n)&&n)
{
memset(G,-,sizeof(G));
for (int i=;i<n;i++)
{
scanf("%d%d",&x[i],&y[i]);
G[x[i]][y[i]]=i;
}
int m=;
for (int i=;i<n;i++)
{
for (int j=i+;j<n;j++)
{
if (x[i]==x[j]||y[i]==y[j]) continue;
int fir,sec;
if (G[x[i]][y[j]]!=-) fir=G[x[i]][y[j]];
else continue;
if (G[x[j]][y[i]]!=-) sec=G[x[j]][y[i]];
else continue; int lon=abs(x[i]-x[j]);
int kua=abs(y[i]-y[j]);
mat[m++]=(Mat){fir,sec,i,j,lon*kua};
}
}
int ans = ;
for (int i=;i<m;i++)
{
for (int j=i+;j<m;j++)
{
ans = max(ans,check(i,j));
}
}
if (ans!=)
printf("%d\n",ans);
else
printf("imp\n");
}
return ;
}
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 ...
- 2019牛客暑期多校训练营(第五场)I.three points 1(暴力几何)
题意:现在给你一个矩形边框 一个三角形的三边长 现在问你能否把三角形放入矩阵边框中 并且输出三个点的坐标 思路:我们可以发现如果一定有解 我们就可以让一个点在左下角(0,0)处 还有一个点在矩形边上 ...
- HDU - 5128The E-pang Palace+暴力枚举,计算几何
第一次写计算几何,ac,感动. 不过感觉自己的代码还可以美化一下. 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5128 题意: 在一个坐标系中,有n个 ...
- COCI 2018/2019 CONTEST #2 T4 Maja T5Sunčanje Solution
COCI 2018/2019 CONTEST #2 T4 T5 Solution abstract 花式暴力 #2 T5 Sunčanje 题意 按顺序给你1e5个长方形(左下角坐标&& ...
- [ACM_几何] Metal Cutting(POJ1514)半平面割与全排暴力切割方案
Description In order to build a ship to travel to Eindhoven, The Netherlands, various sheet metal pa ...
- HDU 5218 The E-pang Palace (简单几何—2014广州现场赛)
题目链接:pid=5128">http://acm.hdu.edu.cn/showproblem.php? pid=5128 题面: The E-pang Palace Time Li ...
- [ACM_暴力][ACM_几何] ZOJ 1426 Counting Rectangles (水平竖直线段组成的矩形个数,暴力)
Description We are given a figure consisting of only horizontal and vertical line segments. Our goal ...
- 简单几何(判断矩形的位置) UVALive 7070 The E-pang Palace(14广州B)
题目传送门 题意:给了一些点,问组成两个不相交的矩形的面积和最大 分析:暴力枚举,先找出可以组成矩形的两点并保存起来(vis数组很好),然后写个函数判断四个点是否在另一个矩形内部.当时没有保存矩形,用 ...
- UVALive 7070 The E-pang Palace(暴力)
实话说这个题就是个暴力,但是有坑,第一次我以为相含是不行的,结果WA,我加上相含以后还WA,我居然把这两个矩形的面积加在一块了吗,应该取大的那一个啊-- 方法就是枚举对角线,为了让自己不蒙圈,我写了一 ...
随机推荐
- World Wind Java开发之三 显示状态栏信息
先来看下本篇博客索要达到的效果: 找到源代码下的gov.nasa.worldwind.util下的StatusBar.java文件,能够看到状态栏显示的信息主要包含视点高度以及相应空间点三维坐标以及是 ...
- mysqli 实例
1.封装数据库连接(connect.php): <?php // 封装数据库连接 // 设置页面编码声明 header("Content-type: text/html; charse ...
- 【DB2】对两列分组之后判断另外一列是否有重复
建立表数据如下: ),sex ),sex_nm ),OWER ),TYPE ),TYPE_NM )); ,','水果'), (,','水果'), (,','水果'), (,','水果'), (,',' ...
- 非等高cell实战--实现微博页面
代码地址如下:http://www.demodashi.com/demo/11639.html 前言 学习过UITableView.AutoLayout以及MVC的相关知识,接下来通过一个微博页面实战 ...
- linux入门基础——linux网络配置
linux网络配置 以太网连接 在linux中,以太网接口被命名为:eth0.eth1等.0.1代表网卡编号 通过lspci命令能够查看网卡硬件信息(假设是usb网卡,则须要使用lsusb命令) 命令 ...
- [UIDevice currentDevice].model
iPhone Simulator iPad Simulator iPod touch iPad iPhone
- android中几个很有用的的api
0x0001 public PackageInfo getPackageArchiveInfo (String archiveFilePath, int flags) Since: API Level ...
- Eclips中文版或汉化使用
Eclipse简体中文包下载地址 :http://babel.eclipse.org/babel/ 在上面网站找,下载地址应该是(注意对应的版本): http://www.eclipse.org/do ...
- Verilog HDL test bench 문법에 관한
16bit ripple carry adder test bench `timescale 1ns/1ns module testbench2; reg [15:0] a, [15:0] b, c_ ...
- MSP430WARE++的使用3:modbus模块的调用方法
MSP430WARE++的使用3:modbus模块的调用方法 MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设. 本文将介绍modbus模块驱动程序的调 ...