HDU 2202 计算几何
最大三角形
Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4015 Accepted Submission(s): 1433
Eddy对这道题目百思不得其解,想不通用什么方法来解决,因此他找到了聪明的你,请你帮他解决这个题目。
<= n <= 50000 而且 -10000 <= xi, yi <= 10000.
每组输出占一行。
3 4
2 6
3 7
6
2 6
3 9
2 0
8 0
6 6
7 7
27.00
//最大三角形的顶点一定是凸包的顶点,先求凸包再三重循环用向量算最大的三角形面积。刚开始以为这样会超时竟然没有
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n,top;
struct nod
{
double x,y;
}p[],que[];
int xy(nod p0)
{
p0.x-=p[].x;
p0.y-=p[].y;
if(p0.x>=&&p[].y>=) return ;
if(p[].x<=&&p[].y>) return ;
if(p[].x<&&p[].y<=) return ;
if(p[].x>=&&p[].y<) return ;
}
double chaji(nod p0,nod p1,nod p2)
{
return ((p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y)*(p2.x-p0.x));
}
bool cmp(nod p1,nod p2)
{
int L1=xy(p1),L2=xy(p2);
if(L1==L2)
{
double tem=chaji(p[],p1,p2);
if(tem>) return ;
if(tem<) return ;
if(tem==)
return p1.x<p2.x;
}
else return L1<L2;
}
void tubao()
{
top=;
que[top].x=p[].x;que[top++].y=p[].y;
que[top].x=p[].x;que[top++].y=p[].y;
que[top].x=p[].x;que[top].y=p[].y;
for(int i=;i<=n;i++)
{
while(chaji(que[top-],que[top],p[i])<=)
top--;
que[++top].x=p[i].x;
que[top].y=p[i].y;
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
double Minx=,Miny=;
int Mini;
for(int i=;i<n;i++)
{
scanf("%lf%lf",&p[i].x,&p[i].y);
if(p[i].y<Miny)
{
Miny=p[i].y;
Minx=p[i].x;
Mini=i;
}
else if(p[i].y==Miny&&p[i].x<Minx)
{
Minx=p[i].x;
Mini=i;
}
}
if(n==||n==)
{
printf("0.00\n");
continue;
}
double tem=p[].x;
p[].x=p[Mini].x;
p[Mini].x=tem;
tem=p[].y;
p[].y=p[Mini].y;
p[Mini].y=tem;
sort(p+,p+n,cmp);
p[n].x=p[].x;p[n].y=p[].y;
tubao();
double ans=0.0;
for(int i=;i<=top-;i++)
for(int j=i+;j<=top-;j++)
for(int k=j+;k<=top;k++)
{
ans=max(fabs(chaji(que[i],que[j],que[k])),ans);
}
printf("%.2lf\n",ans/);
}
return ;
}
HDU 2202 计算几何的更多相关文章
- hdu 2108:Shape of HDU(计算几何,判断多边形是否是凸多边形,水题)
Shape of HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- *HDU 2108 计算几何
Shape of HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- hdu 2202 最大三角形 (凸包)
最大三角形 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 5784 (计算几何)
Problem How Many Triangles (HDU 5784) 题目大意 给定平面上的n个点(n<2000),询问可以组成多少个锐角三角形. 解题分析 直接统计锐角三角形较困难,考虑 ...
- hdu 4720 计算几何简单题
昨天用vim练了一道大水题,今天特地找了道稍难一点的题.不过也不是很难,简单的计算几何而已.练习用vim编码,用gdb调试,结果居然1A了,没调试...囧... 做法很简单,无非就是两种情况:①三个巫 ...
- HDU 2202 最大三角形(凸包)
Problem Description 老师在计算几何这门课上给Eddy布置了一道题目,题目是这样的:给定二维的平面上n个不同的点,要求在这些点里寻找三个点,使他们构成的三角形拥有的面积最大.Eddy ...
- HDU 6205[计算几何,JAVA]
题目链接[http://acm.hdu.edu.cn/showproblem.php?pid=6206] 题意: 给出不共线的三个点,和一个点(x,y),然后判断(x,y)在不在这三个点组成的圆外. ...
- hdu 3320 计算几何(三维图形几何变换)
openGL Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- *HDU 1007 计算几何
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
随机推荐
- [不断更新]iOS开发常用技术
1.修改默认初始化方法 构建便利构造器 修改默认init初始化 .m文件中 @implementation 类名 -(id)init{ self=[super init]; printf(" ...
- CentOS7 安装中文帮助手册
1.首先确定系统安装中文字体否 locale 2.rpm安装中文帮助手册 挂在光盘 将man-pages-zh-CN-1.5.2-4.el7.noarch.rpm拷贝到本机 rpm -ivh man- ...
- REPL环境
一.Node的REPL基本操作 REPL(Read-eval-print-loop):交互式解析器 在REPL环境下,可以定义和运行变量.函数.对象. REPL的常用命令: 进入node,即进入了RE ...
- JAVA程序中SQL语句无法传递中文参数
vi /etc/my.cnf [mysqld]# The default character set that will be used when a new schema or table is# ...
- Linux远程服务器上安装SVN
前言 SVN服务器有2种运行方式:独立服务器和借助apache.2种方式各有利弊,独立SVN服务器不结合Apache安装使用,连接独立SVN服务器也不用HTTP协议.这是比较快捷的SVN服务器配置方法 ...
- 用C#实现 查看exe所加载dll列表的功能
var p = System.Diagnostics. Process.GetProcessesByName("w3wp").First(); List<System.Dia ...
- EChart数据的异步加载和更新
ECharts是国内开发一款图标插件,在网页中我们经常要用到图标显示,直接引用十分方便. 直接到ECharts主页调用插件 <!DOCTYPE html> <html style=& ...
- js new
如果一个函数前面带上new来调用该函数,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将被绑定到那个新对象上 即: function B(){} var a=new B( ...
- php结合md5的加密解密算法实例
<?php /* * Created on 2016-12-22 * */ function encrypt($data, $key){ $key = md5($key); $x = 0; $l ...
- Visual Studio (VS IDE) 你必须知道的功能和技巧 - 【.Net必知系列】
前言 本文主要阐述一些Visual Studio开发下需要知道的少部分且比较实用的功能,也是很多人忽略的部分.一些不常用而且冷门的功能不在本文范围,当然本文的尾巴[.Net必知系列]纯属意淫,如有雷同 ...