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 ...
随机推荐
- java面试题总汇
coreJava部分 7 1.面向对象的特征有哪些方面? 7 2.作用域public,private,protected,以及不写时的区别? 7 3.String 是最基本的数据类型吗? 7 4.fl ...
- freemarker 中文乱码
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker ...
- JDBC连接数据库
JDBC连接数据库 1.加载JDBC驱动程序. Class.forName("com.mysql.jdbc.Driver"); 建立连接,. Connection conn = D ...
- Spring + Jedis集成Redis(集群redis数据库)
前段时间说过单例redis数据库的方法,但是生成环境一般不会使用,基本上都是集群redis数据库,所以这里说说集群redis的代码. 1.pom.xml引入jar <!--Redis--> ...
- Riemann映射定理
单复变函数几何理论最高的成就我想应该属于Riemann映射定理吧! Riemann映射定理:$\mathbb C$中任意边界多余一个点的单连通域$D$都与单位圆盘$B(0,1)$等价,即存在着$D$上 ...
- 忘记Windows7登陆密码解决办法
忘记 Windows7 的登陆密码,解决这个问题的思路就是替换 system32 下的 Magnify.exe . 可以从 WindowsPE 启动,到 C:\windows\system32 下. ...
- Python中内置数据类型list,tuple,dict,set的区别和用法
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...
- C# Cookie
1 推荐使用 is 或 as 操作符而不是强制 2 编码风格:Tab ——改成两个 C# 文档注释的快捷键 (将配置表压缩,从压缩文件中查找xml配置表 这个是指Unity项目上面) 尽量使 ...
- 【Java EE 学习 76 下】【数据采集系统第八天】【通过AOP实现日志管理】【日志管理功能分析和初步实现】
一.日志管理相关分析 1.日志管理是一种典型的系统级别的应用,非常适合使用spring AOP实现. 2.使用日志管理的目的:对系统修改的动作进行记录,比如对权限.角色.用户的写操作.修改操作.删除操 ...
- MySQL开发规范
字段设计 (1)建议使用UNSIGNED存储非负数值. (2)建议使用INT UNSIGNED存储IPV4. (4)INT类型固定占用4字节存储,例如INT(4)仅代表显示字符宽度为4位,不代表存储长 ...