PTA L3-021 神坛
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805046577840128
题目大意:给你一些点的坐标,取其中的三个点,求面积最小值(可以为0,即可以不是三角形)。
题目分析:首先是计算面积的公式,利用向量计算明显要快一点(已知两个共起点向量 其三角形面积=0.5*abs(x1*y2-x2*y1) 这个读者可以自行查阅资料)。既然用到向量,那么就需要选中一个点,然后计算出这个点和其余点的向量,对向量的夹角进行排序,面积最小值一定是相邻向量所组成的图形的面积(这里等我有时间再进行补充吧,我刚开始也是这里不太明白,现在有那么一点点清楚,所以将这到记下来。恰好要下很久的东西,这个时候来补充一点吧。写在后面咯)。需要说明的是,这只是选了其中的一个顶点,我们需要对每个顶点都进行一次这样的操作,然后求所有值中的最小值。
代码:
#include <bits/stdc++.h>using namespace std;#define LL long long
#define MAXN 5005struct point{LL x;LL y;bool operator <(point& p){return p.x*y<x*p.y;}
}a[MAXN],m[MAXN];
LL n,ans=1e18;
int main()
{scanf("%d",&n);for(int i=0;i<n;i++)scanf("%lld%lld",&a[i].x,&a[i].y);for(int i=0;i<n;i++){int t=0;for(int j=0;j<n;j++){if(i==j);else{m[t].x=a[j].x-a[i].x;m[t].y=a[j].y-a[i].y;t++;}}sort(m,m+t);for(int k=1;k<t;k++)ans=min(ans,abs(m[k].x*m[k-1].y-m[k].y*m[k-1].x));}double res=ans*1.0;res=res/2;printf("%.3f",res);return 0;
}
写在后面:由于时间比较紧急,所以写得不够详细,等我以后再来完善吧。
至于为什么要排序,以及为什么是求相邻的边组成的图形面积。我们先想想如果是求最大面积是怎么求呢?没错,就是用凸包来计算,最大面积的三角形的三个点一定都在凸包上,如果有一个点在凸包内,那么它的面积会小。
所以,我们求相邻的向量组成的面积,并不一定可以求出最小面积,但是可以排除那些不必要的情况。
画的图不是很清晰,假设现在求出ABC组成的三角形的面积,现在有一点D,(因为我们要解释AD在AB和AC中间的情况,所以其余情况不讨论)那么D有两种情况,D在ABC内和ABC 外,但是不管如何,当以B或者C为顶点时(这就是为什么所有的定点都要弄一次)又会是两个相邻的三角形,与之前的两个三角形恰好组成了所有可能的三角形。(我理解的就这么多了,希望你们也可以讲讲你们的理解)
PTA L3-021 神坛相关推荐
- CCCC 天梯赛 PTA ZOJ 题目 L1 L2 L3
PTA 天梯赛题目整理 L2 难点 **L2-001 紧急救援** **L2-002 链表去重** **L2-003 月饼** **L2-004 这是二叉搜索树吗** **L2-005 集合相似度** ...
- PTA 神坛 (30 分)
L3-3 神坛 (30 分) 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相 ...
- PTA:7-4 神坛 (30 分)
一.题目 在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线 ...
- 【CCCC】PAT : 团体程序设计天梯赛-练习集 L3 答案(01-23)
[CCCC]PAT : 团体程序设计天梯赛-练习集 L3 答案 顶着满课,整整一星期,终于咕完了.(:´д`)ゞ 知识点分类(23): 1.搜索模拟(5):BFS,DFS,最短路,路径打印 2.计算几 ...
- PAT : 团体程序设计天梯赛-练习集 L3 答案即比赛技巧
知识点分类(23): 1.搜索模拟(5):BFS,DFS,最短路,路径打印 2.计算几何(5):找规律,斜率计算,极角排序,三角形面积,三点共线,凸包 3.数据结构(5):栈,并查集,二叉树,堆,线段 ...
- PTA|团体程序设计天梯赛-练习题库集
文章目录 关于爬取脚本的编写 L1-001 Hello World! (5 分) L1-002 打印沙漏 (15 分) L1-003 个位数统计 (15 分) L1-004 计算摄氏温度 (5 分) ...
- 2021/4/24团队设计天梯赛L3题目集及部分题解
2021/4/24团队设计天梯赛L3题目集及部分题解: 以下题解都是通过PTA测试的,大致保证正确性: 查看题目戳此::PTA题目集 L3题目集 L3-01 森森旅游 (30 分) L3-02 还原文 ...
- 沈师PTA数据结构2021编程复习题
R7-1 二分查找 (15 分) 输入n值(1<=n<=1000).n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数.若x不存在,输出 ...
- 【PTA天梯赛练习题目2】
pta天梯赛练习题目 考试座位号 每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的 ...
最新文章
- mysql经纬度转距离_Mysql 拿指定经纬度与数据库多条经纬度进行距离计算 (转)
- windows双机调试
- js jquery 函数回调
- linux cut列截取工具使用示例
- sitecore系列教程之目标功能有什么新意?
- Android Call requires API level 11 (current min is 8)的解决方案
- quadprog函数的介绍和应用,二次规划函数
- 完美实现类似QQ的自拍头像、上传头像功能!(Demo 源码)
- Spring RestTemplate: 比httpClient更优雅的Restful URL访问, java HttpPost with header
- 开始学习python标准库---os
- UE4【C++】子弹伤害系统使用
- Javaweb - JSP章节 - MVC和三层架构案例总练习(下) - “回显数据”-“修改数据”功能实现
- eNSP-利用单臂路由实现VLAN 间路由
- 2022计算机毕业设计如何选题?
- c语言用system打出黑桃,C语言的随机发牌程序(红桃、黑桃、梅花、方块)
- java vcf文件 昵称怎么写,Vcf文件的突变ID号注释
- 让我们看看往年的1024传智播客怎么安排的
- android无感知拍照github,装X指南之通过 VirtualApp 实现免 Root 权限 Hook
- js中的yield、yield*和Generator函数
- 应用程序正常初始化(0xc150002)失败