L3-021 神坛 (30分)

在古老的迈瑞城,巍然屹立着 n 块神石。长老们商议,选取 3 块神石围成一个神坛。因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好。特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面积为 0.000

长老们发现这个问题没有那么简单,于是委托你编程解决这个难题。

输入格式:

输入在第一行给出一个正整数 n(3 ≤ n ≤ 5000)。随后 n 行,每行有两个整数,分别表示神石的横坐标、纵坐标(−10​9​​≤ 横坐标、纵坐标 <10​9​​)。

输出格式:

在一行中输出神坛的最小面积,四舍五入保留 3 位小数。

输入样例:

8
3 4
2 4
1 1
4 1
0 3
3 0
1 3
4 2

输出样例:

0.500

样例解释

输出的数值等于图中红色或紫色框线的三角形的面积。

思路:    三角形的面积通过 向量的叉积来求,

枚举每个点, 对每个点进行极角排序: 先按象限排序,再按叉积排序。

相邻两个点构成当前情况下的最小三角形面积  。

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
struct  node{ll x,y;int rel;
}a[5010],b[5010];
int n;
bool cmp(node x,node y){ //极角排序   if( x.rel != y.rel)  return x.rel < y.rel;return x.x*y.y-x.y*y.x<0;
}
int judge(node x) { //返回象限 if(x.x > 0 && x.y > 0) return 1;if(x.x > 0 && x.y < 0) return 2;if(x.x < 0 && x.y < 0) return 3;if(x.x < 0 && x.y > 0) return 4;
}
int main(){scanf("%d",&n);for( int i=1;i<=n;i++) scanf("%lld%lld",&a[i].x,&a[i].y);double ans=-1;int cnt;for(int i=1;i<=n;i++){cnt=1;for(int j=1;j<=n;j++){if( i==j )continue;b[cnt].x   = a[j].x-a[i].x;b[cnt].y   = a[j].y-a[i].y;b[cnt].rel = judge(b[cnt]);cnt++;}sort(b+1,b+n,cmp);for(int j=1;j<n-1;j++){if( ans==-1||fabs(b[j+1].x*b[j].y-b[j+1].y*b[j].x)*0.5<ans )ans=fabs(b[j+1].x*b[j].y-b[j+1].y*b[j].x)*0.5;}}printf("%.3f\n",ans);return 0;
}

L3-021 神坛 (30分)相关推荐

  1. 【CCCC】L3-021 神坛 (30分)计算几何+求三角形面积(极角排序)

    problem L3-021 神坛 (30分) 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如 ...

  2. 7-4 神坛 (30分)

    7-4 神坛 (30分) 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同, ...

  3. L3-021 神坛 (30 分)

    L3-021 神坛 (30 分) 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐 ...

  4. L3-021 神坛 (30分)(图论)

    L3-021 神坛 (30分) 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标 ...

  5. L3-021 神坛 (30 分)-PAT 团体程序设计天梯赛 GPLT

    在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...

  6. L3-3 神坛 (30分)

    在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...

  7. L3-021 神坛 (30分)

    在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...

  8. PTA:7-4 神坛 (30 分)

    一.题目 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线 ...

  9. 神坛 (30 分)(立体几何求三个点组成的最小面积)

    题目:https://pintia.cn/problem-sets/994805046380707840/problems/994805046577840128 在古老的迈瑞城,巍然屹立着 n 块神石 ...

最新文章

  1. gvim plugin管理
  2. 基于 Rancher 的企业 CI/CD 环境搭建
  3. php closure invoke,PHP Closure类详解
  4. IDEA中常用快捷键整理及重置快捷键
  5. Shell语法—— while 条件语句
  6. excel单元格内容合并
  7. c语言 static的用法
  8. 当我们在聊 Serverless 时你应该知道这些 | CSDN博文精选
  9. java短视频上传阿里云流程_短视频上传
  10. python矢量裁剪栅格代码_Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性...
  11. python之字典的操作
  12. python itertools卡死_Python使用itertools模块来解决算法问题,python
  13. arm 跑马灯 linux,ARM开发板(S3C2440)上LED灯驱动及跑马灯的实现
  14. 【汇编优化】之汇编中的指针操作
  15. CakePHP中文手册【翻译】-Cake Blog创建指南
  16. 【Python+OpenCV】Windows+Python3.6.0(Anaconda3)+OpenCV3.2.0安装配置
  17. Windows服务器配置与管理-------DHCP服务器搭建与管理
  18. 基于ssm java医院病历管理系统
  19. 如何把SWF转为PDF文件
  20. 关于 打印页面 图片被截断

热门文章

  1. 图片处理命令行工具ImageMagick介绍
  2. php 定义变量为什么前面加一个美元($)符号呢
  3. Hyperspectral Imagery Classification Based on Contrastive Learning
  4. python内置函数返回序列中最大元素_Python 内置函数 ____________ 用来返回序列中的最大元素。_学小易找答案...
  5. Idea中导入多个项目在同一工作空间。
  6. 「内容管理系统」34个无头CMS应该在你的技术雷达上
  7. pptx,docx,xlsx 文件下载问题
  8. [2011-6-8]EiISTP检索的第三届计算智能与软件工程(CiSE 2011)国际学术会议
  9. Cisco服务器http显示内容,cisco路由怎样开启http服务
  10. 信息安全(一)之椭圆曲线方程