【题解】洛谷 P4423 [BJWC2011] 最小三角形

题目链接

传送门

思路

我们充分发扬人类智慧:

将所有点全部绕原点随机旋转同一个角度,然后按 x × y x\times y x×y 从小到大排序。

根据数学直觉,在随机旋转后,答案中的三个点在数组中肯定不会离得太远。

所以我们只取每个点向后的 9 9 9 个点来计算答案。

这样速度快得飞起,在 1 ≤ n ≤ 2 × 1 0 5 1\le n \le 2\times 10^5 1n2×105 时都可以在 931ms 内卡过(也有可能是我调参不够好,欢迎大佬提出更高效的参数)。

代码

#include <iostream>
#include <cmath>
#include <cstdlib>
#include <algorithm>using namespace std;const int N = 200010;int n;
struct Point
{double x, y;bool operator< (const Point &t)const{return x * y < t.x * t.y;}
}p[N];double dis(Point a, Point b)
{return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
}int main()
{scanf("%d", &n);for (int i = 1; i <= n; i ++ )scanf("%lf%lf", &p[i].x, &p[i].y);double alpha = 12.4514;for (int i = 1; i <= n; i ++ ){double x = p[i].x + 9, y = p[i].y + 9;p[i].x = x * cos(alpha) - y * sin(alpha);p[i].y = x * sin(alpha) + y * cos(alpha);}double res = 1e18;sort(p + 1, p + n + 1);for (int i = 1; i <= n; i ++ )for (int j = i + 1; j <= min(n, i + 9); j ++ )for (int k = j + 1; k <= min(n, j + 9); k ++ )res = min(res, dis(p[i], p[j]) + dis(p[j], p[k]) + dis(p[i], p[k]));printf("%.6lf\n", res);return 0;
}

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

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

相关文章

vue 生成word表格文档 前端库介绍

在Vue中生成Word表格文档&#xff0c;你可以使用一些前端库来帮助你完成这项任务。以下是几个流行的库及其简要介绍&#xff1a; 1. **docxtemplater**: - **介绍**: docxtemplater是一个基于JavaScript的库&#xff0c;它可以处理docx和pptx模板&#xff0c;允许你通过JSON…

《白话C++》第10章 STL和boost,Page84 shared_ptr示例使用,容器中的指针

容器中的指针在容器解体时经常忘了释放&#xff1f;指针存放在容器中多次&#xff0c;结果被重复释放&#xff1f;这个问题&#xff0c;通过std::shared_ptr都可以完美地解决&#xff1a; #include <iostream> #include <list> #include <vector> #include …

如何使用Net2FTP部署本地Web网站并实现远程文件共享

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

【DBeaver+mysql】如何在DBeaver中创建mysql服务的连接并新建数据库

一、创建步骤 1、下载安装mysql 8.0&#xff08;注意&#xff0c;安装过程会启动mysql服务&#xff0c;这才是能用命令行执行node处理sql语句的关键&#xff09; 下载地址&#xff1a;https://dev.mysql.com/downloads/file/?id526407 2、下载安装DBeaver数据库管理IDE 3、在…

优化线性回归模型的代价函数

目录 前言1 代价函数与线性回归模型2 单变量线性回归3 双变量线性回归4 优化过程结论 前言 线性回归是机器学习领域中最基础的模型之一&#xff0c;它通过找到最佳拟合直线来预测连续型输出变量。在线性回归中&#xff0c;代价函数&#xff08;Cost Function&#xff09;起着至…

js-前端存储之sessionStorage

1.使用场景 sessionStorage 是 Web Storage API 提供的一种客户端存储机制&#xff0c;用于在浏览器中保存会话级别&#xff08;session-level&#xff09;的数据。与 localStorage 不同&#xff0c;sessionStorage 中存储的数据在用户关闭标签页或浏览器窗口时会被清除。 2.使…

uniapp小程序因使用 uni.switchTab传不了值使用vuex(简单明了)

uniapp里面不需要npm下载vuex&#xff0c;自带vuex直接用就行 一、先建立一个index.js文件夹 里面写如以下代码 import Vue from vueimport Vuex from vuexVue.use(Vuex)const store new Vuex.Store({state: {userExt: null},mutations: {//相当于同步的操作setUserExt(sta…

查询获取SMBIOS的方法

一、用于在本地查询 SMBIOS 的示例 PowerShell 脚本 Microsoft网站参考 以下 ChassisTypes 列表是从最新的 DMTF SMBIOS 规范复制的。 # Set-ExecutionPolicy or Script Signing documentation needs to be reviewed # Current script is designed to run on individual mach…

x86下使用硬件实现的任务切换(TSS表)---使用代码讲解

实现任务切换(使用TSS) 视频讲解可以看这一个课程 • The current program, task, or procedure executes a JMP or CALL instruction to a TSS descriptor in the GDT. • The current program, task, or procedure executes a JMP or CALL instruction to a task-gate descri…

Spring Event详解

Spring Event详解 1.详细介绍2.使用场景3.注意事项4.案例分析5.代码实现6.与消息队列的区别7.SpringEvent结合线程池异步实现 1.详细介绍 Spring Event是Spring框架内建的一种发布/订阅&#xff08;Publish-Subscribe&#xff09;模式的实现&#xff0c;它允许应用内部不同组件…

并查集,真好用,一次AC不是梦!

文章目录 &#x1f680;前言&#x1f680;并查集&#x1f680;并查集的两个优化✈️路径压缩✈️按秩合并 &#x1f680;并查集代码模板 &#x1f680;前言 大家好啊&#xff01;今天阿辉来给大家介绍一种简洁而优雅的数据结构——并查集&#xff0c;不知道各位是否了解它&…

ssh连接服务器需要子网掩码吗?

IP寻址需要同时知道IP地址和子网掩码&#xff0c;但是在通过ssh连接服务器时&#xff0c;只需要知道IP地址和端口号就可以了&#xff0c;ssh通讯为什么不需要子网掩码呢。在不知道子网掩码的前提下&#xff0c;可以正确找到IP对应的主机吗&#xff1f; 不需要&#xff0c;SSH&a…

桌面显示器应用Type-C接口

随着科技的飞速发展&#xff0c;桌面显示器作为我们日常工作中不可或缺的设备之一&#xff0c;也在不断地更新换代。其中&#xff0c;Type-C接口的应用成为了桌面显示器发展的一个重要趋势。那么&#xff0c;桌面显示器应用Type-C接口究竟有什么好处呢&#xff1f; 首先&#x…

职场隐私守则:关系再好也别碰这些“雷区”

在职场中&#xff0c;与同事建立良好的关系是非常重要的&#xff0c;它有助于提高工作效率、增进团队协作&#xff0c;并且能够为日常的工作带来便利。 然而&#xff0c;即便与同事的关系再亲密&#xff0c;也有一些隐私话题是绝对不能轻易透露的。 在与同事和领导相处时&…

文章复现 | 差异分析和PPI网络构建

原文链接&#xff1a;差异分析和PPI网路图绘制教程 写在前面 在原文中&#xff0c;作者获得285个DEG&#xff0c;在此推文中共获得601个DEG。小杜的猜想是标准化的水段不同的原因吧&#xff0c;或是其他的原因。此外&#xff0c;惊奇的发现发表医学类的文章在附件中都不提供相…

【微信小程序】wxss 和 css 、wxml 和 html 区别

wxss 和 css 区别 wxss 支持小程序特有的选择器和 样式属性 scroll-into-view cover-view 等wxss 引入了 rpx 单位&#xff0c;可以根据屏幕宽度进行自适应&#xff0c;使得开发者可以更方便的处理不同尺寸屏幕的适配问题。wxss 背景图片只能引入外链&#xff0c;不能使用本地…

golang 获取域名 ip dns 信息

1 Go语言查找DNS A记录 A (Address) 记录是用来指定主机名&#xff08;或域名&#xff09;对应的IP地址记录. 用户可以将该域名下的网站服务器指向到自己的web server上. 同时也可以设置您域名的二级域名. 使用 Go 语言的标准库 net.LookupIP() 接受域名的字符串参数,返回 ne…

【零基础学习CAPL】——CAN报文的发送(LiveCounter——生命信号)

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 文章目录 1.概述2.面板创建3.系统变量创建4.CAPL实现5.效果5.1.0~15循环发送5.2.固定值发送6.全量脚本1.概述 本章主要介绍带有生命信号LiveCounter的报文发送脚本 一般报文可使用CANoe的IG模块直接发送,但存在循环冗余…

代码随想录算法训练营第三十六天|435.无重叠区间、763.划分字母区间、56.合并区间

435.无重叠区间 思路&#xff1a;找到删除几个区间&#xff0c;让题目给出的区间没有重叠部分&#xff0c;那么首先我们先进行排序&#xff08;按照左边界排序&#xff09;&#xff0c;那么下一个区间的左边界小于上一个区间的右边界&#xff0c;那么这两个区间一定有重叠的部分…

燃气热水器水箱的气密性测试密封方案介绍—格雷希尔快速接头

家用燃气热水器的气密性检测是保障其安全性的重要环节之一&#xff0c;如热水器的水箱&#xff0c;它的周围缠绕着一圈铜管&#xff0c;这圈铜管和水箱之间有数量不等的焊接点&#xff0c;为了保证热水器的正常运行&#xff0c;必须要对它们进行气密性测试。   燃气热水器水箱…