L3-021 神坛

news2024/9/26 3:29:09

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

样例解释

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

当你不会时:请记住最简单粗暴的方法(暴力版)

分析原因:是哪超时了呢,是因为什么超时的

得到结论:第三层for循环时,大部分时间都在进行无效的重复计算

大胆尝试:有没有什么办法可以让它不重复或者少重复呢

很不幸,还是如此,并没有得到跟多的分数,怎么办

--》时间不够,那就只能放弃了

--》还有时间,我能行,我可以的,我一定行

总结:三层循环嵌套肯定是不行了,我已经进全力优化了,到达极限了,不行啊。

极限分析:既然三层不行,那两层能不能实现呢,多写几个第二层的循环代替第三层行不行呢,试试???!!!

分析:很不错,又混了两分,目的达到了,超时问题已解决,接下来再试试能不能解决答案错误问题。为什么错了呢??????????????

结论:原来是因为 不相邻的两条边组成的三角形也可能比相邻的要小

再想想办法,马上就要出来了。

//高数下第八章知识   向量的外积   =    |a||b|sin <a,b>

//        而三角形的面积公式    S   =1/2 |a||b|sin <a,b>

      

没注意横纵坐标范围(+10^9),MinArea给小了,而且由于有乘法,bouble把不够用

上天总是会眷顾努力的人,不是吗

相信自己,你可以的,你能行

完整源代码:

#include <iostream>
#include<bits/stdc++.h>
#include <cmath>
using namespace std;

struct Point{
	long long x;//x坐标
	long long y;//y坐标
}p[5001];

bool cmp(Point a,Point b){//按顺时针排序
    return b.y*a.x>b.x*a.y;
	}

int main(){
	int n;
	scanf("%d",&n);
	for(int i=0; i<n; i++)
		scanf("%lld %lld",&p[i].x,&p[i].y);//scanf()的效率比cin高 
		
	long long MinArea=1e18;
	for(int i=0; i<n; i++){
		Point sides[n]; //每个点都能和其他n-1个点组成n-1条向量边 
		int k=0;
		for(int j=0; j<n; j++){
			if(i==j) continue;	
			sides[k++] = {p[j].x-p[i].x , p[j].y-p[i].y};//向量边  p[j]-p[i] 
		}
		sort(sides,sides+k,cmp);
		for(int j=1; j<k; j++){  //这是嵌套在第一层里面的第二循环,而不是嵌套在第二层里面的第三层循环	
			//三角形向量面积公式 S = 1/2 * | xA*yB - xB*yA |
			MinArea = min(MinArea,abs(sides[j].x*sides[j-1].y - sides[j-1].x*sides[j].y)); 
		}			
	} 
	
	printf("%.3f",MinArea/2.0);		
	return 0;		
} 
		

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

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

相关文章

STM32F103R8T6 SPWM实现正弦波输出

前言 PWM合成正弦波&#xff0c;原理什么的不详细说了&#xff0c;概括一下就是 PWM有效面积的积分 正弦波的有效面积。PWM的频率越快&#xff0c;细分的越多&#xff0c;锯齿也就越不明显。 做法是&#xff1a;首先利用正弦波取点软件&#xff0c;取点1000个&#xff0c;生…

计算机网络:OSPF协议和链路状态算法

OSPF协议 开放最短路经优先OSPF协议是基于最短路径算法SPF,其主要特征就是使用分布式的链路状态协议OSPF协议的特点&#xff1a; 1.使用泛洪法向自治系统中的所有路由器发送信息&#xff0c;即路由器通过输出端口向所有相邻的路由器发送信息&#xff0c;而每一个相邻的路由器又…

阶段二12_面向对象高级_继承3

知识点内容&#xff1a; 抽象类 模板设计模式 final关键字 一.抽象类 (1)抽象类概述 抽象方法&#xff1a;将共性的行为&#xff08;方法&#xff09;抽取到父类之后&#xff0c;发现该方法的实现逻辑 无法在父类中给出具体明确&#xff0c;该方法就可以定义为抽象方法。 抽…

ASP.NET CORE API 使用Orleans

快速使用Monimal API 快速集成Orleans 微软官网地址如下&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/orleans/quickstarts/build-your-first-orleans-app?sourcerecommendations&tabsvisual-studio当然它的存储grain存储采用的是内存级别存储&#xff0c;我缓存…

JVM调优面试题——参数命令专题

文章目录1、JVM参数有哪些&#xff1f;1.1、 标准参数1.2、-X参数1.3、 -XX参数1.4、 其他参数1.5、 查看参数1.6、 设置参数的常见方式1.7、 常用参数含义2、JVM常用命令有哪些&#xff1f;2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap3、你会估算GC频率吗?4、 内存溢出…

【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是unity的TMP中文输入显示乱码的解决方式 创建 TextMeshPro 中文字体遇到的问题描述解决方式Font Asset Creator 面板扩展中文字体文本遇到…

深度学习零基础学习之路——第五章 个人数据集的制作

Python深度学习入门 第一章 Python深度学习入门之环境软件配置 第二章 Python深度学习入门之数据处理Dataset的使用 第三章 数据可视化TensorBoard和TochVision的使用 第四章 UNet-Family中Unet、Unet和Unet3的简介 第五章 个人数据集的制作 深度学习数据集的制作Python深度学…

MySQL 行锁

行锁 : 对表中行记录的锁 MySQL 的行锁 : 由各个引擎自己实现MyISAM 不支持行锁InnoDB 支持行锁 两阶段锁协议 : 行锁是在需要时才加上&#xff0c;要等到事务结束才释放 例子 : id 是表 t 的主键的 B 的 update 会阻塞&#xff0c;直到 A 执行 commit 后&#xff0c;B 才能…

Spring Cloud/Spring Cloud Alibaba核心知识总结

Spring Cloud核心知识总结 springCloud是一个服务治理平台&#xff0c;若干个框架的集合&#xff0c;提供了全套的分布式系统的解决方案。包含&#xff1a;服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息、分布式事务等等。 SpringC…

Python机器学习库scikit-learn在Anaconda中的配置

本文介绍在Anaconda环境中&#xff0c;安装Python语言scikit-learn模块的方法。 scikit-learn库&#xff08;简称sklearn&#xff09;是一个基于Python语言的机器学习库&#xff0c;提供了各种机器学习算法和相关工具&#xff0c;包括分类、回归、聚类、降维、模型选择和预处理…

TiDB Server

文章目录TiDB Server架构TiDB Server作用TiDB Server的进程SQL语句的解析和编译SQL读写相关模块在线DDL相关模块GC机制与相关模块TiDB Server的缓存热点小表缓存TiDB Server架构 Protocol Layer、Parse、Compile负责sql语句的解析编译和优化&#xff0c;然后生成sql语句执行计划…

易优cms attribute 栏目属性列表

attribute 栏目属性列表 attribute 栏目属性列表 [基础用法] 标签&#xff1a;attribute 描述&#xff1a;获取栏目的属性列表&#xff0c;或者单独获取某个属性值。 用法&#xff1a; {eyou:attribute typeauto} {$attr.name}&#xff1a;{$attr.value} {/eyou:attri…

iperf3主页官方信息

​ iPerf 是一款支持TCP,UDP和SCTP的高速协议测试工具 网络极限性能测试网络中立性检测 主页 下载iPerf安装包 公共的iPerf3服务器 iPerf用户手册 iPerf论坛—法语 联系我们 iPerf / iPerf3简介 iPerf3是一款用于对IP网络的最大带宽进行主动测试的工具。提供对和时间&…

地质灾害防治单位资质

地质灾害危险性评估&#xff0c;是指在地质灾害易发区进行工程建设或者编制地质灾害易发区内的国土空间规划时&#xff0c;对建设工程或者规划区遭受山体崩塌、滑坡、泥石流、地面塌陷、地裂缝、地面沉降等地质灾害的可能性和建设工程引发地质灾害的可能性作出评估&#xff0c;…

VUE3入门基础:input元素的type属性值说明

说明 在Vue 3中&#xff0c;<input>元素的type属性可以设置不同的类型&#xff0c;以适应不同的输入需求。 常见的type属性取值如下&#xff1a; text&#xff1a;默认值&#xff0c;用于输入文本。password&#xff1a;用于输入密码&#xff0c;输入内容会被隐藏。em…

System has not been booted with systemd as init system (PID 1). Can‘t operate.

今天想查看防火墙的状态&#xff0c;但是对防火墙的操作还不熟悉&#xff0c;网上搜到的命令是这样的systemctl status firewalld 结果输入之后出现了这样的错误&#xff1a; System has not been booted with systemd as init system (PID 1). Can’t operate. 然后接着去网上…

老马闲评数字化「4」做数字化会不会被供应商拿捏住

原文作者&#xff1a;行云创新CEO 马洪喜 导语 开年过后业务特别的繁忙&#xff0c;出差也比较多&#xff0c;所以有段时间没更新了&#xff0c;对不住大家&#xff01; 上一集&#xff08;您可以查看“行云创新”主页阅读原文&#xff09;咱们聊了数字化转型的“想转、急转、…

计算机网络:BGP协议

BGP协议 与其他AS的邻站BPG发言人交换信息。 交换的网络可达性信息&#xff0c;即要到达某一个网络所要经历的一系列AS 发生变化时&#xff0c;更新有变化的部分 BGP协议交换信息的过程&#xff1a;所交换的网络可达性信息就是要到达某一个网络所要经历的一系列AS&#xff…

Oracle 11g创建和删除数据库实例

一、创建数据库实例 1.点击“开始” -> “Oracle -OraDb11g_home1” -> “Database Configuration Assistant” 2.点击“下一步” 3.选择“创建数据库”&#xff0c;点击“下一步” 4.默认设置&#xff0c;不用更改&#xff0c;直接点击“下一步” 5.填写要创建的“实例…

【Java基础 下】 030 -- 网络编程

目录 一、什么是网络编程 1、常见的软件架构&#xff08;CS & BS&#xff09; ①、BS架构的优缺点 ②、CS架构的优缺点 2、小结 二、网络编程三要素 1、IP ①、IPv4 ②、IPv6 ③、小结 ④、IPv4的一些细节 ⑤、InetAddress的使用 2、端口号 3、协议 ①、TCP & UDP 三、…