HDU 2202 计算几何

最大三角形

Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4015    Accepted Submission(s): 1433


Problem Description
老师在计算几何这门课上给Eddy布置了一道题目,题目是这样的:给定二维的平面上n个不同的点,要求在这些点里寻找三个点,使他们构成的三角形拥有的面积最大。
Eddy对这道题目百思不得其解,想不通用什么方法来解决,因此他找到了聪明的你,请你帮他解决这个题目。

 

Input
输入数据包含多组测试用例,每个测试用例的第一行包含一个整数n,表示一共有n个互不相同的点,接下来的n行每行包含2个整数xi,yi,表示平面上第i个点的x与y坐标。你可以认为:3 <= n <= 50000 而且 -10000 <= xi, yi <= 10000.

 

Output
对于每一组测试数据,请输出构成的最大的三角形的面积,结果保留两位小数。
每组输出占一行。

 

Sample Input
3 3 4 2 6 3 7 6 2 6 3 9 2 0 8 0 6 6 7 7

 

Sample Output
1.50 27.00

 

Author
Eddy
代码:
 1 //最大三角形的顶点一定是凸包的顶点,先求凸包再三重循环用向量算最大的三角形面积。刚开始以为这样会超时竟然没有
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<cmath>
 7 using namespace std;
 8 int n,top;
 9 struct nod
10 {
11     double x,y;
12 }p[50004],que[50004];
13 int xy(nod p0)
14 {
15     p0.x-=p[0].x;
16     p0.y-=p[0].y;
17     if(p0.x>=0&&p[0].y>=0) return 1;
18     if(p[0].x<=0&&p[0].y>0) return 2;
19     if(p[0].x<0&&p[0].y<=0) return 3;
20     if(p[0].x>=0&&p[0].y<0) return 4;
21 }
22 double chaji(nod p0,nod p1,nod p2)
23 {
24     return ((p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y)*(p2.x-p0.x));
25 }
26 bool cmp(nod p1,nod p2)
27 {
28     int L1=xy(p1),L2=xy(p2);
29     if(L1==L2)
30     {
31         double tem=chaji(p[0],p1,p2);
32         if(tem>0) return 1;
33         if(tem<0) return 0;
34         if(tem==0)
35         return p1.x<p2.x;
36     }
37     else return L1<L2;
38 }
39 void tubao()
40 {
41     top=0;
42     que[top].x=p[0].x;que[top++].y=p[0].y;
43     que[top].x=p[1].x;que[top++].y=p[1].y;
44     que[top].x=p[2].x;que[top].y=p[2].y;
45     for(int i=3;i<=n;i++)
46     {
47         while(chaji(que[top-1],que[top],p[i])<=0)
48         top--;
49         que[++top].x=p[i].x;
50         que[top].y=p[i].y;
51     }
52 }
53 int main()
54 {
55     while(scanf("%d",&n)!=EOF)
56     {
57         double Minx=10000007,Miny=10000007;
58         int Mini;
59         for(int i=0;i<n;i++)
60         {
61             scanf("%lf%lf",&p[i].x,&p[i].y);
62             if(p[i].y<Miny)
63             {
64                 Miny=p[i].y;
65                 Minx=p[i].x;
66                 Mini=i;
67             }
68             else if(p[i].y==Miny&&p[i].x<Minx)
69             {
70                 Minx=p[i].x;
71                 Mini=i;
72             }
73         }
74         if(n==1||n==2)
75         {
76             printf("0.00\n");
77             continue;
78         }
79         double tem=p[0].x;
80         p[0].x=p[Mini].x;
81         p[Mini].x=tem;
82         tem=p[0].y;
83         p[0].y=p[Mini].y;
84         p[Mini].y=tem;
85         sort(p+1,p+n,cmp);
86         p[n].x=p[0].x;p[n].y=p[0].y;
87         tubao();
88         double ans=0.0;
89         for(int i=0;i<=top-2;i++)
90         for(int j=i+1;j<=top-1;j++)
91         for(int k=j+1;k<=top;k++)
92         {
93             ans=max(fabs(chaji(que[i],que[j],que[k])),ans);
94         }
95         printf("%.2lf\n",ans/2);
96     }
97     return 0;
98 }

 

转载于:https://www.cnblogs.com/--ZHIYUAN/p/6080780.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot系列十:SpringBoot整合Redis

From: https://www.cnblogs.com/leeSmall/p/8728231.html 声明&#xff1a;本文来源于MLDN培训视频的课堂笔记&#xff0c;写在这里只是为了方便查阅。 1、概念&#xff1a;SpringBoot 整合 Redis 2、背景 Redis 的数据库的整合在 java 里面提供的官方工具包&#xff1a;j…

海贼王革命家—龙—实力到底如何?

龙——整个海贼王世界中最神秘的人物&#xff0c;令世界政府最担心的存在&#xff0c;是所有迷最为期待的实力展现&#xff0c;他的身上好像有着无数的秘密等着尾田为我们揭晓。 路飞的父亲——未来的海贼王、卡普的儿子——海军英雄、革民军首领——唯一可以跟世界政府抗衡的组…

python模块介绍- xlwt 创建xls文件(excel)

python模块介绍- xlwt 创建xls文件&#xff08;excel&#xff09; 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk&#xff1a;ouyangchongwu#gmail.comqq 37391319 博客:http://blog.csdn.net/oychw #版权所有&#xff0c;转载刊登请来函联系 # 深圳测试自动化python项目…

SpringBoot(六):SpringBoot整合Redis

From: https://blog.csdn.net/plei_yue/article/details/79362372 前言 在本篇文章中将SpringBoot整合Redis&#xff0c;使用的是RedisTemplate&#xff0c;分别实现了SpringBoot与redis的单机版、集群版、哨兵模式的整合。 Maven依赖 <!-- 整合redis --> <…

[4]Telerik Grid 简单使用方法

1.columns <% Html.Telerik().Grid(Model).Name("Orders").Columns(columns >{//绑定列名columns.Bound(o > o.OrderID);//隐藏字段columns.Bound(o > o.OrderID).Hidden(true); //绑定列标题 columns.Bound(o > o.OrderDate).Title("…

Springboot 2.x版本 RedisCacheManager 类的配置,【与1.x 略有不同】

From: https://blog.csdn.net/qq_15071263/article/details/82897330 文章目录 Springboot 2.x版本 RedisCacheManager 类的配置&#xff0c;【与1.x 略有不同】 1、1.x 配置方式 2、2.x 配置方式 Springboot 2.x版本 RedisCacheMan…

.net应用程序中添加chm帮助文档打开显示此程序无法显示网页问题

在做.net大作业时添加了chm帮助文档结果在打开时显示“此程序无法显示网页问题”&#xff0c;但是把帮助文档拷到别的路径下却显示正常&#xff0c; 经过从网上查找&#xff0c;终于找到了答案&#xff1a; (1)、chm文件的路径中不能含有“#”“%”等字符&#xff0c;当含有这些…

新磁盘创建lvm并挂载

1 ### 1.查看硬盘2 fdisk -l3 4 ### 删除分区5 fdisk /dev/sdc6 ### 按d删除&#xff0c;按w保存并退出7 8 ### 创建pv9 pvcreate /dev/sdc 10 11 ### 创建 vg 12 vgcreate vg_hdp /dev/sdc 13 14 ### 创建 lv 15 lvcreate -L 200G -n lv_hdp vg_hdp 16 17 ### 格式化 lv 18…

用unison来同步你的远程文件夹 - Fwolf's Blog

用unison来同步你的远程文件夹 - Fwolfs Blog: "" (Via.)转载于:https://www.cnblogs.com/devops/p/3157101.html

MyBatis 实践

From&#xff1a; https://www.cnblogs.com/luyiba/p/6303717.html MyBatis简介 MyBatis前身是iBatis,是一个基于Java的数据持久层/对象关系映射(ORM)框架. MyBatis是对JDBC的封装,使开发人员只需关注SQL本身,而不需花费过多的精力去处理如注册驱动、设置参数、创建Connectio…

皮克斯背后新技术

2019独角兽企业重金招聘Python工程师标准>>> 皮克斯每创作一部动画作品总会给观众带来或多或少的惊喜&#xff0c;而很多影视动画从业人员也习惯于关注他们的每一部作品的制作&#xff0c;因为新技术往往就在这些制作过程中诞生&#xff0c;如今皮克斯动画已经成为C…

@Retention注解

From: https://blog.csdn.net/asdgbc/article/details/70196749 日常开发中经常用到注解&#xff0c;所以也会经常使用到Retention注解&#xff0c;写下这篇文章做个记。 Reteniton的作用是定义被它所注解的注解保留多久&#xff0c;一共有三种策略&#xff0c;定义在Retentio…

[翻译]:怎样从C/C++代码中对C#进行回调

声明:网络上类似的中文博客大有存在&#xff0c;本人知识水平有限&#xff0c;业余爱好&#xff0c;也是为了备份收藏How to make a callback to C# from C/C code 本着共享知识的初衷&#xff0c;翻译一份给大家参考&#xff0c;为了便于阅读不至于拗口&#xff0c;没有按照原…

android thread实例

http://blog.csdn.net/awebkit/article/details/6982748

Linux Centos关机命令

centos关机命令&#xff1a; 1、halt 立马关机 2、shutdown -h 10 1分钟后自动关机 3、poweroff 立刻关机,并且电源也会断掉 4、shutdown -h now 立刻关机(root用户使用) 如果是通过shutdown命令设置关机的话&#xff0c;可以用shutdown -c命令取消重启转载于:https://www.cnbl…

RedisTemplate和StringRedisTemplate使用

From: https://blog.csdn.net/qiesheng/article/details/83897634 //向redis里存入数据和设置缓存时间 stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS); //val做-1操作 stringRedisTemplate.boundValueOps("test&q…

linux中yum搭建与配置

服务器配置&#xff1a;1、把光盘中的内容全部拷到/var/ftp/Server/中mount /dev/cdrom /mnt //挂载光盘rpm -ivh /mnt/Packages/vsftpd-2.2.2-11.el6.i686.rpm //安装vsftpd cp -rf /mnt/Packages /var/ftp/Server //复制光盘rpm包到本地2、安装createreporpm -…

数据结构:二叉查找树(C语言实现)

数据结构&#xff1a;二叉查找树 二叉查找树 基础知识 关于二叉树的基础知识&#xff0c;请看我的一篇博客:二叉树的链式存储 二叉查找树的特征 二叉查找树或者是一棵空树&#xff0c;或者是具有下列性质的二叉树&#xff1a;  1.若其左子树不空&#xff0c;则左子树上所有结…

Effective Java 电子书 apk版本下载

下载安装包以后&#xff0c;安装即可阅读该书了&#xff0c;并且实时展示每章节代码哦&#xff0c;并且可以运行哦&#xff0c;赶快下载体验吧. Effective Java中文第二版下载地址&#xff1a;下载 应用截图&#xff1a; 转载于:https://www.cnblogs.com/spring87/p/6090010.ht…

SpringBoot解决ajax跨域问题

From: https://www.jianshu.com/p/e57ed1ee3070 利用注解的方式解决AJAX请求跨域问题一、第一种方式: 1、编写一个支持跨域请求的 Configuration import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.…