最近点对 HDU5721

「分治法」最近点对距离问题 一、问题描述 给定平面S上n个点,找其中的一对点,使得在n个点组成的 所有点对中,该点对间的距离最小。 假设所讨论的点是以标准笛卡儿坐标形式(x, y)给出的。因 此,在两个点Pi =(xi , yi )和Pj =(xj , yj )之间的距离是标准的欧几里德 距离: d = 根号下( x i − x j ) 2 + ( y i − y j )2 二、问题分析 直接用暴力解法很简单,用结构体把每个点的x、y坐标都存下来之后,用一个二重循环即可获得距离的最大值。但是这样做的时间复杂度也达到了O(n的平方) 阅读详情

最近点对:
对所有点按照 x坐标排序。然后分治,求出左半边和右半边的最近点对,对于两边的最近距离取较小的,记为 d。取从分治的中间点向左右各距离为 d d的范围中的所有点,把这些点按照 y坐标排序。对于每个点,扫一下与它 y坐标差小于等于 d的点,更新答案,可以证明(证明没看懂=_=)这样的点是很少的,不超过6个。

该题题意:给定n个点的坐标,第i个点消失后的最近点对距离为di,求di的和。

这题解法: 因为如果消失的点不是最近点对,那么对答案是没有影响的。
所以可以先求出没消失之前的最近点距离*(n-2),(n-2)指的是消失的点不是最近点对。再分别求两个最近点消失后的最近点距离。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <vector>
#define x first
#define y second
using namespace std;
typedef long long LL;
struct point
{
    int x,y;
}p[100005];
int tmp[100005];
int A,B;
LL mn=1ll<<54;
bool cmpxy(point a,point b)
{
    if(a.x!=b.x) return a.x<b.x;
    else return a.y<b.y;
}
bool cmpy(int a,int b)
{
    return p[a].y<p[b].y;
}
LL dis(point a,point b)
{
    return (LL)(a.x-b.x)*(a.x-b.x)+(LL)(a.y-b.y)*(a.y-b.y);
}
void update(int a,int b)//更新[1,n]的最近点对
{
    if(mn>dis(p[a],p[b])){mn=dis(p[a],p[b]);A=a;B=b;}
}
LL closest(int L,int R)
{
    if(L==R) return 1ll<<50;
    if(L+1==R) {update(L,R);return dis(p[L],p[R]);}
    int mid=(L+R)>>1;
    LL ret=min(closest(L,mid),closest(mid+1,R));
    int k=0;
    for(int i=L;i<=R;i++)
    {
        if(1ll*(p[mid].x-p[i].x)*(p[mid].x-p[i].x)<=ret)
            tmp[k++]=i;//存符合条件的点的下标
    }
    sort(tmp,tmp+k,cmpy);
    for(int i=0;i<k;i++)
        for(int j=i+1;j<k&&1ll*(p[tmp[j]].y-p[tmp[i]].y)*(p[tmp[j]].y-p[tmp[i]].y)<=ret;j++)
        {
            update(tmp[i],tmp[j]);
            ret=min(dis(p[tmp[i]],p[tmp[j]]),ret);
        }
    return ret;
 /*ret为[L,R]区间的最近点距离的d^2,所以前面都是类似这种
 (p[mid].x-p[i].x)*(p[mid].x-p[i].x)<=ret    
用来表示x坐标差小于d
}
int main()
{
#ifdef LOCAL
    freopen("in.txt","r",stdin);
#endif // LOCAL
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        LL ans=0;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&p[i].x,&p[i].y);
        sort(p+1,p+1+n,cmpxy);
        closest(1,n);
        ans+=mn*(n-2);
        mn=1ll<<50;
        int a=A,b=B;
        for(int i=1;i<=n;i++)
            if(i==a) swap(p[i],p[n]);
        closest(1,n-1);
        ans+=mn;
        mn=1ll<<50;
        for(int i=1;i<=n;i++)
            if(i==b) swap(p[i],p[n]);
        closest(1,n-1);
        ans+=mn;
        mn=1ll<<50;
        cout<<ans<<endl;
    }
    return 0;
}
避坑指南:Quectel EC200A-CN在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置全解析 本文详细解析了Quectel EC200A-CN模块在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置,包括模式选择、内核配置、动态切换AT指令、网络接口生成与排错、路由与防火墙设置、性能调优及特殊场景应对策略,帮助开发者避免常见配置陷阱,提升网络稳定性和效率。 阅读详情

相关推荐

arXiv订阅进阶玩法:除了邮件,还能用RSS和Python脚本打造你的专属论文追踪器

本文介绍了arXiv订阅的进阶玩法,教你如何通过RSS和Python脚本打造个性化的论文追踪器。突破传统邮件订阅的局限,实现实时更新、精准过滤和自动化管理,提升科研效率。特别适合需要高效追踪最新研究进展的学者和开发者。

weixin_26757925的博客 625

HDU - 5721 Palace(最近点对)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5721 分析:很显然,先对全部的点搜一遍,这个值能用n-2次,记录下最近的两个点,再搜两次,每次删除其中一个点。思路很容易想到的,主要是怎么操作。 #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const ll INF = 1e12; const int maxn = 1e5

TK_wang_的博客 191

# 多用户 JupyterHub 配置教程(通用 Linux 服务器版)

以上即是通用 Linux 服务器上的多用户 JupyterHub 实战配置。从安装认证与 Spawner 选择自动创建系统用户到反代与运维,覆盖了小团队到中等规模的主流场景。根据团队增长与合规要求,你可以进一步引入、统一身份源(LDAP/OAuth2/Keycloak)与资源配额治理,平滑演进到企业级部署。

数字化老司机 1288

【洛谷】P1429 平面最近点对(加强版)(配数学证明)

我们需要证明一下分治完归并得最终答案的这一部分的时间是线性的。坐标从小到大排序,接着暴力从下到上枚举带状区域中的点,对于每个点,我们枚举与其。,然后先左右分治求出两个半平面里的答案,设这两个答案的最小值为。个点,而这两个点在同一个半平面内,并且这两个点的距离一定不大于。我们先假设在分治的过程中,已经将左右两边的点按。坐标从小到大排过序了,接着我们先将所有点按归并的方式按。,表示一个点的行坐标和列坐标,中间用一个空格隔开。个点的所有点对中,该距离为所有点对中最小的。个点,找出其中的一对点的距离,使得在这。

数学、算法爱好者的博客 819

重塑计算的五层蛋糕:解读黄仁勋CES2026演讲背后的AI新秩序与物理世界

2026年CES演讲揭示AI新纪元:从语言模型到物理智能 NVIDIA CEO黄仁勋在2026年CES演讲中描绘了计算产业的根本性变革。核心突破包括: 计算范式转移:从指令执行转向意图理解,智能体系统崛起 物理AI突破:发布Cosmos世界模型,通过合成数据训练AI理解物理定律 全新VeraRubin计算平台:6芯片协同设计,解决摩尔定律放缓与AI需求增长的矛盾 自动驾驶革命:推出具备推理能力的Alpamayo模型,实现L4级自动驾驶 演讲标志着AI正从数字世界迈向物理世界,NVIDIA通过全栈布局,正在重

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 1273

电涡流位移测量技术深度解密

电涡流位移传感器凭借非接触测量、高精度(可达纳米级)、强环境适应性(耐高温高压油污)等优势,成为工业精密位移检测的核心技术。其工作原理基于电磁感应:高频磁场在金属靶面感应涡流,通过检测线圈阻抗变化转化为位移信号。应用需注意靶材依赖性(需按实际材料标定)、安装精度及抗干扰措施。广泛应用于磁悬浮轴承、航空发动机、精密制造等领域,实现对微米级位移的可靠监测。

技术工作者 1753

python 实现找到最近的点对之间的距离算法

找到最近的点对之间的距离的算法,可以采用多种方法,包括暴力求解法和分治法。1. 暴力求解法暴力求解法是最直接的方法,它计算所有点对之间的距离,并找出其中的最小值。这种方法的时间复杂度为O(n^2),其中n是点的数量。具体算法步骤如下:对于点集a中的每个点i,遍历点集a中所有点j(i < j),计算点i和点j之间的距离d。如果d小于当前已知的最小距离mindist,则更新mindist为d。遍历结束后,mindist即为所求的最近点对之间的距离。2. 分治法。

luthane的博客 1726

truetime2.0使用说明

truetime2.0使用说明1.1 truetime2.0工具箱的下载与安装1.2 truetime2.0工具箱的配置1.3 truetime2.0各模块的说明 注意,以下出现的地址本电脑MATLAB安装路径,请注意自己的MATLAB安装路径 1.1 truetime2.0工具箱的下载与安装 步骤1)没有工具箱的朋友可以 在可以在这个网站上免费申请下载http://www.control.lth.se/truetime/,里面有最新的版本。我用的是TrueTime 2.0 beta 1 步骤2)将

小六@sll 浊酒一杯 畅谈三千 清茶一壶 念游四海 4202

分治递归--二维最近点对问题

如果点的个数小于等于1个,则返回一个较大的默认值表示不存在最近的点对。然后,根据递归基本情况判断点的个数,如果只有2个点,则直接计算这两个点之间的距离。如果点的个数大于2个,则我们将点集分割为两部分,并对左右两部分分别递归调用 findClosestPairDistance 函数,得到左右子集的最近点距离。我们找到左右子集的最小距离,并将其作为初始的最小距离。历遍所有的点,并将横坐标与中线横坐标的距离小于最小距离的点放入一个临时的点集 stripPoints 中。最后,我们返回最小的距离作为结果。

weixin_62717970的博客 1328

SAP FI 会计科目表(COA)可直接套用配置模板

摘要:本文提供了SAP S/4HANA环境下可直接套用的会计科目表(COA)配置模板,包含科目编码规则、号段规划、科目组设置等核心内容。模板采用10位数字编码,按资产(1000)、负债(2000)、权益(3000)、成本(4000)、收入(5000)、费用(6000)六大类划分号段,并预设科目组控制字段状态。适用于集团/单一公司、国内/跨国企业场景,支持多表架构映射,配置完成后可通过事务码SAKO验证科目清单。模板遵循"前4位固定一级科目"原则,企业可根据行业特性调整明细科目。

金牌架构师 266

AUTOSAR进阶图解==>AUTOSAR_SWS_COM

AUTOSAR COM模块是AUTOSAR通信堆栈的核心组件,提供信号导向的通信服务。该模块位于通信服务层,连接RTE与PDU Router,主要功能包括信号封装/提取、传输模式管理、信号路由、超时监控和字节序转换等。COM模块架构分为应用层、通信服务层和通信抽象层,包含信号管理、I-PDU处理、传输模式管理等组件。其配置结构包括顶层容器、I-PDU组、I-PDU和信号等多层次配置对象,支持丰富的参数设置。模块采用严格的状态管理机制,包括模块状态和I-PDU组状态转换,确保通信可靠性。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1243

【HDU 5721】Palace(平面最近点对)

【HDU 5721】Palace(平面最近点对) Palace Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 404    Accepted Submission(s): 104 Problem Desc

ACMer' 3134

RAG效果调优清单(命中率提升3倍)

本文提出了一套工程可落地的RAG(检索增强生成)模型组合方案,强调通过最优组合实现效果、成本和扩展性的平衡。核心架构包括Embedding模型、向量数据库检索、Rerank模型和LLM生成四个环节,推荐了四种具体组合方案:本地最优性价比(bge+reranker+Qwen 7B)、效果优先(bge-large+reranker+14B模型)、高并发(轻量模型+vLLM)和中英混合(多语言模型)。文章指出Embedding决定检索下限,Rerank提升准确率上限,LLM影响最终体验,并提供了不同场景的优化策略

刘一说的IT专栏 520

HDU 5721 Palace 平面最近点对

问题描述 为了寻找失去的爱人Cupid,Psyche需要完成Venus的最后一项任务:前往冥界,收集一盒冥界皇后Prosperina的美貌。 冥界有nn个神殿,可以表示为平面上的nn个整点。Psyche想要找到这nn座神殿中,最近的两座神殿之间的距离。传说那就是通往主殿的密码。 但是冥界神秘莫测,在不同的时刻,这nn座神殿中的某一座会消失。 Psyche想要知道,对于nn座神殿中的任意一座

I good vegetable a! 510

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

分治法求两点间最短距离->HDU5721

分治法求最近点对的距离:主要思想就是先把n个点按x坐标排序,然后求左边n/2个和右边n/2个的最近距离,最后合并。合并过程: 首先,假设点是n个,编号为1到n。我们要分治求,则找一个中间的编号m,先求出1到m点的最近距离设为d1,还有m+1到n的最近距离设为d2。这里的点需要按x坐标的顺序排好,并且假设这些点中,没有2点在同一个位置。(若有,则直接最小距离为0了)。 然后,令d为d1,

忘川蒿里 4857

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

HDU 5721 Palace(平面最近点对(分治))

http://acm.hdu.edu.cn/showproblem.php?pid=5721 n个点,去掉一个点的情况下,最近距离平方之和。平面最近点对模版题,先求出最近距离,然后找到是哪两个点,然后这个距离乘以n-2 ,然后枚举去掉两个点中的一个,再求平面最近距离,做3次即可,用stl很方便QAQ,记录是哪两个点的时候直接记录坐标,因为中间有排序,记录编号没用。代码:#include <map>

Miracle_ma的专栏 766

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hdu-5721 Palace(最近点对)

题目链接: Palace Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Problem Description The last trial Venus imposes on Psyche is a quest to the underworld. She is...

weixin_30530939的博客 158

BestCoder 2nd Anniversary D hdu 5721 最近点对

链接:戳这里 Palace  Time Limit: 8000/4000 MS (Java/Others)   Memory Limit: 262144/262144 K (Java/Others) 问题描述 为了寻找失去的爱人Cupid,Psyche需要完成Venus的最后一项任务:前往冥界,收集一盒冥界皇后Prosperina的美貌。 冥界有 n个神殿,可以表示为

Cross 479

HDU 5721 Palace BestCoder 2nd Anniversary (平面最近点对)

Palace Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 465    Accepted Submission(s): 118 Problem Description The last trial Venus impo

LzyRapX 1110

【HDU5721 BestCoder 2nd AnniversaryD】【平面最近点对 分治写法+KD-tree写法】Palace 平面最近点对

Palace Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 260    Accepted Submission(s): 72 Problem Description The last trial Venus imp

snowy_smile的博客 3010

hdu5721Palace

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5721 题意:给定n个点,设f[i]表示删掉第i个点的最近点对的距离,求sigma(1 分析:稍微想一下就知道n个点的最近点对的距离会被计算n-2次(不是删除这对点的情况),然后只要在计算两次删这对点中的点的情况就好了。PS:知道这是经典的分治求最近点对问题(不会的就自己去查资料学吧,挺简单的),比赛的

Fsss 835

HDU 5721Palace

Palace    Accepts: 28    Submissions: 307  Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) 问题描述 为了寻找失去的爱人Cupid,Psyche需要完成Venus的最后一项任务:前往冥界,收集一盒冥界

Wilbert的博客 654

HDU5721(Palace)

题目传送门 Problem Description The last trial Venus imposes on Psyche is a quest to the underworld. She is to take a box and obtain in it a dose of the beauty of Prosperina, queen of the underworld. There are n palaces in the underworld, which can be located on

weixin_43808717的博客 191

HDU - 5721 Palace

The last trial Venus imposes on Psyche is a quest to the underworld. She is to take a box and obtain in it a dose of the beauty of Prosperina, queen of the underworld.  There are nn palaces in the un...

hpu风之旅 292

HDU 5721 Palace

Problem Description The last trial Venus imposes on Psyche is a quest to the underworld. She is to take a box and obtain in it a dose of the beauty of Prosperina, queen of the underworld. There

Occult 603

hdu 5721 空间点对距离,记录点

#include using namespace std; typedef long long ll; const ll INF=0x3f3f3f3f3f3f3f3f; int flag; struct node1 { ll x,y; int id; }node[100010],node2[100010]; int cmpx(node1 p1,node1 p2) { if

nucshiyilang的博客 354
上一篇: 组合数的不同质因子
下一篇: 水题 吧?
turtlew
博客等级 码龄11年 2粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值