L3-021 神坛(极角排序求三角形最小面积)
0.000。长老们发现这个问题没有那么简单,于是委托你编程解决这个难题。
输入格式:
输入在第一行给出一个正整数 n(3 ≤n≤5000)。随后 n 行,每行有两个整数,分别表示神石的横坐标、纵坐标(-109≤横坐标、纵坐标<109)。
输出格式:
在一行中输出神坛的最小面积,四舍五入保留 3 位小数。
输入样例:
8
3 4
2 4
1 1
4 1
0 3
3 0
1 3
4 2
输出样例:
0.500
样例解释
输出的数值等于图中红色或紫色框线的三角形的面积。

题意
N个点求最小三角形。
题解
首先需要知道3个点如何求S,0.5*abs(aXb)。
枚举每个点,极角排序,求出相邻向量的面积取个最小。
通过画图,可以发现若不取相邻,虽然也可以但是得多一层循环不能接受。
取相邻,可以发现刚好覆盖了所有最小的三角形。
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=; int n;
struct point//存储点
{
ll x,y;
}p[N],c[N];
bool cmp(point a,point b)//按顺时针排序
{
return b.y*a.x>b.x*a.y;
}
int main()
{
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%lld%lld",&p[i].x,&p[i].y);
ll ans=1e18;
for(int i=;i<n;i++)
{
int k=;
for(int j=;j<n;j++)
{
if(i!=j)
{
c[k].x=p[j].x-p[i].x;
c[k].y=p[j].y-p[i].y;
k++;
}
}
sort(c,c+k,cmp);
for(int j=;j<k;j++)
ans=min(ans,abs(c[j].y*c[j-].x-c[j].x*c[j-].y));
}
printf("%.3f\n",ans/.);
return ;
}
L3-021 神坛(极角排序求三角形最小面积)的更多相关文章
- poj 1696 极角排序求最长逆时针螺旋线
Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4970 Accepted: 3100 Descrip ...
- Wall--POJ1113(极角排序+求凸包)
http://poj.org/problem?id=1113 题目大意:现在要给n个点,让你修一个围墙把这些点围起来,距离最小是l 分析 :现在就是求凸包的周长然后再加上一个圆的周长 #includ ...
- hdu5785(极角排序求所有锐角钝角个数)
做法很显然,求出所有的锐角和钝角就能求出有多少个锐角三角形了. 我用了愚钝的方法,写了两三个小时... 看了下别人简单的代码.学习了下做法. sort(temp+,temp+cnt+);//排序 Fo ...
- HDU 2036 叉乘求三角形面积
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...
- hdu-2036求任意多边形面积
改革春风吹满地 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- bzoj 1914: [Usaco2010 OPen]Triangle Counting 数三角形——极角排序
Description 在一只大灰狼偷偷潜入Farmer Don的牛群被群牛发现后,贝西现在不得不履行着她站岗的职责.从她的守卫塔向下瞭望简直就是一件烦透了的事情.她决定做一些开发智力的小练习,防止她 ...
- 【BZOJ1914】数三角形(组合数,极角排序)
[BZOJ1914]数三角形(组合数,极角排序) 题面 BZOJ权限题 良心洛谷 题解 这种姿势很吼啊,表示计算几何啥的一窍不通来着. 题目就是这样,正难则反,所以我们不考虑过原点的三角形, 反过来, ...
- bzoj 1914: [Usaco2010 OPen]Triangle Counting 数三角形【叉积+极角排序+瞎搞】
参考:https://blog.csdn.net/u012288458/article/details/50830498 有点神啊 正难则反,考虑计算不符合要求的三角形.具体方法是枚举每个点,把这个点 ...
- poj 1696:Space Ant(计算几何,凸包变种,极角排序)
Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2876 Accepted: 1839 Descrip ...
随机推荐
- Windows中的备份和还原
1:增量备份 (查看文件属性,只备打了勾的,备完后把勾取消掉,修改后勾都会打上) 2:差异备份(备份有勾的 ,备份完后不会取消勾) 周一:备一 周二:备二 周三:备三 周四:备三,四
- 2、Netty基础
一.前言 主要包含下面内容: 初识 Netty: 使用 Java NIO 搭建简单的客户端与服务端实现网络通讯: 使用 Netty 搭建简单的客户端与服务端实现网络通讯: Netty 底层操作与 Ja ...
- Ping 笔记
Ping 笔记 查看网络间的连通性. 当设备与PC在同一局域网中(连接同一路由器),设备与PC互Ping对方,若只有其中一个掉线连不上,两者可能存在网络端口的问题, 若设备与PC同时掉线,则为路由器 ...
- DB2调优摘要
感谢原博主 http://yishueitian326.blog.163.com/blog/static/2858637520106695733719/ 性 能是关系到随需应变型应用程序成功与否的关键 ...
- SSD 的介绍 -------转载
本文转载自: http://www.sohu.com/a/258190629_494938 背景 SSD(Solid-State Drive)是目前正处于鼎盛时期的存储设备.相较于传统的硬盘存储器 ...
- C#中获取文件信息的代码
如下的内容内容是关于C#中获取文件信息的内容,应该对大伙有一些好处. FileInfo fi = new FileInfo(@"C:file.txt"); if(fi.Exists ...
- redis在实践中的一些常见问题以及优化思路
1.fork耗时导致高并发请求延时 RDB和AOF的时候,其实会有生成RDB快照,AOF rewrite,耗费磁盘IO的过程,主进程fork子进程 fork的时候,子进程是需要拷贝父进程的空间内存页表 ...
- oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)
0 前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. ...
- 执行计划:SET AUTOTRACE TRACEONLY
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显 ...
- JSON语法
JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. ...