hdoj 2202 最大三角形
题目大意:给定n(3<=n<=50000)个点,求其中任意三个点组成的三角形面积最大,输出该面积.
题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=2202
解题思路:用graham求离散点凸包,随后暴力枚举求最大三角形面积
/*
author:panzg
time:2013/10/22
graham求凸包
*/
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
struct point
{
double x,y;
};
point p[],s[];
bool mult(point sp,point ep,point op)
{
return (sp.x-op.x)*(ep.y-op.y)>=(ep.x-op.x)*(sp.y-op.y);
}
bool operator < (const point &l, const point &r)
{
return l.y < r.y || (l.y == r.y && l.x < r.x);
}
int graham(point pnt[],int n,point res[])
{
int i,len,top=;
sort(pnt,pnt+n);
if(n==) return ;
res[]=pnt[];
if(n==) return ;
res[]=pnt[];
if(n==) return ;
res[]=pnt[];
for(i=; i<n; i++)
{
while(top&&mult(pnt[i],res[top],res[top-]))
top--;
res[++top]=pnt[i];
}
len=top;
res[++top]=pnt[n-];
for(i=n-; i>=; i--)
{
while(top!=len&&mult(pnt[i],res[top],res[top-])) top--;
res[++top]=pnt[i];
}
return top;
}
double area(point i,point j,point k)
{
double s=fabs(double(i.x*j.y+j.x*k.y+k.x*i.y-
i.y*j.x-j.y*k.x-k.y*i.x)/);
return s;
}
double maxx(double x,double y)
{
return x>y?x:y;
}
int main()
{
int n,m,i,j,k; double ans,t,t1;
freopen("input.txt","r",stdin);
while(cin>>n&&n!=)
{
m=;
memset(p,,sizeof(p));
memset(s,,sizeof(s));
for(i=; i<n; i++)
cin>>p[i].x>>p[i].y;
m=graham(p,n,s); //求凸包 //暴力枚举所有的三角形
for(ans=,i=; i<=m; i++)
for(j=i+; j<=m; j++)
for(k=j+; k<=m; k++)
ans=maxx(ans,area(s[i],s[j],s[k]));
printf("%.2f\n",ans);
}
return ;
}
hdoj 2202 最大三角形的更多相关文章
- hdu 2202 最大三角形 (凸包)
最大三角形 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdoj 2091 空心三角形
空心三角形 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 2202 最大三角形(凸包)
Problem Description 老师在计算几何这门课上给Eddy布置了一道题目,题目是这样的:给定二维的平面上n个不同的点,要求在这些点里寻找三个点,使他们构成的三角形拥有的面积最大.Eddy ...
- hdu 2202 最大三角形_凸包模板
题意:略 思路:直接套用凸包模板 #include <iostream> #include <cstdio> #include <cmath> #include & ...
- HDU 2202 最大三角形
题解:先算出凸包,然后枚举凸包上的点计算即可 #include <cstdio> #include <cmath> #include <cstdlib> #incl ...
- HDU题解索引
HDU 1000 A + B Problem I/O HDU 1001 Sum Problem 数学 HDU 1002 A + B Problem II 高精度加法 HDU 1003 Maxsu ...
- hdoj 2039 三角形
Problem Description 给定三条边,请你判断一下能不能组成一个三角形. Input 输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C.其中A,B,C & ...
- HDOJ(HDU) 2091 空心三角形
Problem Description 把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果.在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出 ...
- HDOJ 1249 三角形『平面分隔』
很水拉 为了记规律- - 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1249 分隔平面公式 下面是我自己查找的公式,没有推到过程,但可以给一些链 ...
随机推荐
- Model Builder中Table2Table中字段映射的问题
ArcGIS10中使用过程中,Bug不少.尽管有了SP3,但模型耦合的深层次的应用中还是错误不少.目前只是遇到一个,利用躲避的方法解决一个.例如,从NetCDF中抽出的数据表,必须在内存和数据库中都存 ...
- Http和Socket连接区别
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助. 1.TCP连接 要想明白Socket连接,先要明白TCP连接.手机能够使用联 ...
- Tables for condition techniques
T682i -- Access sequence and the tables T685 -- Condition types and Access sequences T683s -- ...
- CSS3制作立体导航
<ul class="nav"> <li><a href="">首页</a></li> <li ...
- ThoughtWorks FizzBuzzWhizz 代码实现
当时拉钩网ThoughtWorks出了一道面试题(https://www.jinshuju.net/f/EGQL3D),本人用PHP实现了一下,当时忘记了把代码分享出来,今天特来补上. FizzBuz ...
- mysql在windows下支持表名大小写,lower_case_table_names
windows下mysql默认是不支表名大小写的,也就是表名大小写不敏感.用phpmyadmin创建的驼峰式表名,全部被强制成小写.mysql表名大小写敏感的参数: lower_case_table_ ...
- jquery实现ajax,返回json数据
jquery实现ajax可以调用几种方法 我经常用的是$get(url,data,callback,type)方法 其中url是异步请求的页面(可以是.ashx文件),data是参数,callback ...
- Delphi XE5教程9:基本语法元素
内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误!也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者可 ...
- 系统中使用frameset和Iframe刷新页面session失效
问题:Asp.net中每次刷新页面,session中保存的只就丢失 原因: 1.有些杀毒软件会去扫描web.config文件 2.程序内部有让session丢失的代码,或服务器内存不足 3.程序有框架 ...
- 【转】常用插件和mvn test命令
自定义构建Maven项目,需要包括额外的插件或者配置已存在的插件参数. 1. maven-compiler-plugin 指定JDK版本和编码方式 compiler插件能解决2个问题: 第一: mav ...