zoj 2107 || hdu 1007 求最近点对

ACM-计算几何之Quoit Design——hdu1007 zoj2107 ACM 计算几何 Quoit Design hdu1007 zoj2107 最近点对 阅读详情
分治法求最近点对。我就说一下步骤:首先对所有的点,按x排序。找下表中间的点。这样能够合理地把一堆点分成两堆,递归求这两堆点之中的最小距离。在分成的两堆点中找一个最小的距离,作为最小的距离。以最下标中间的那个点为准,以横坐标作为衡量,找据这个点很坐标之差小于等于最小距离的所有的点,并且记录这些点。把这些点按照纵坐标从小到大排序。在这些点中再找最小的距离,更新原来所有的最小距离。如此这样就能够得到最小的距离。算法的时间复杂度为O(nlogn)。跟别人学来的,以后可以作为求最小点对点一个模板。

代码如下:

#include<math.h>
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 100005
struct point
{
    double x;
    double y;
}p[N],p1[N],p2[N];
bool cmpx(point a,point b)
{
    return a.x<b.x;
}
bool cmpy(point a,point b)
{
    return a.y<b.y;
}
double dis(point a,point b)
{
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double min(double a,double b)
{
    return a>b?b:a;
}
double mindis(int l,int r)
{
    if(l+1==r)return dis(p1[l],p1[r]);
    if(l+2==r)return min(dis(p1[l],p1[l+1]),min(dis(p1[l],p1[r]),dis(p1[l+1],p1[r])));
    int mid=(l+r)>>1;
    double ans=min(mindis(l,mid),mindis(mid+1,r));
    int cn=0;
    for(int i=l;i<=r;i++)
    {
        if(p1[i].x>=p1[mid].x-ans&&p1[i].x<=p1[mid].x+ans)
        {
            p2[cn++]=p1[i];
        }
    }
    sort(p2,p2+cn,cmpy);
    for(int i=0;i<cn;i++)
    {
        for(int j=i+1;j<cn;j++)
        {
            if(p2[j].y-p2[i].y>=ans)break;
            ans=min(ans,dis(p2[i],p2[j]));
        }
    }
    return ans;
}
int main()
{
    int n;
    while(scanf("%d",&n)&&n)
    {
        for(int i=0;i<n;i++)
        {
            scanf("%lf%lf",&p[i].x,&p[i].y);
            p1[i]=p[i];
        }
        sort(p1,p1+n,cmpx);
        double dist=mindis(0,n-1);
        printf("%.2lf\n",dist/2);
    }
    return 0;
}


UABEA:Unity资产包底层编辑与模组制作核心工具详解 在游戏开发和逆向工程领域,资源提取与修改是核心技术需求。Asset Bundle作为Unity引擎的核心资源封装格式,其内部采用序列化数据结构进行存储。理解序列化原理是进行深度资源操作的基础,它决定了数据在文件中的组织方式。这项技术的核心价值在于实现了对游戏资源的精准控制,为游戏模组制作、安全研究和资源分析提供了底层能力。其典型应用场景包括修改游戏参数、替换美术资源、分析资源依赖关系以及进行引擎兼容性研究。UABEA正是基于这一技术理念构建的专业工具,它通过提供对序列化字段的直接读写能力,成为Unity资产 阅读详情

相关推荐

无人机室内悬停如何稳?光流与IMU数据融合实战解析

在无GPS的室内环境中,无人机自主悬停依赖多传感器融合,其中光流与IMU是核心组合。光流传感器通过图像像素位移估算相对地面的速度,长期无漂移,但易受光照和纹理影响;IMU高频响应出色,却存在积分累积漂移。两者在频率与误差特性上天然互补,融合后可实现高精度位置估计。工程实践中,需合理选型、正确处理坐标变换与时间对齐,并通过互补滤波或扩展卡尔曼滤波将光流速度修正引入状态估计,进而支撑位置环与速度环控制。这一技术不仅解决室内定点悬停,也为视觉惯性里程计等更复杂的自主定位提供基础。本文结合真实调试案例,梳理从硬件安

weixin_33314040的博客 293

HDU1007 Quoit Design(分治)

题目链接:hdu1007 题目大意 给定一个整数 n ,下面跟着 n 对二维坐标 (x, y),其中x、y均为实数,表示平面内的 n 个点。问平面内这 n 个点之间的最短距离是多少?输出这个答案的一半。 解题思路 枚举 时间复杂度 O(n2)O(n^2)O(n2),具体做法略。 分治 对于分治的做法我们大致可以分为三个步骤:预处理,分离区间,合并区间。首先我们把平面的点一分为二,然后计算各自的最小距离,回溯后取其中最小后并枚举两个区间一个点在左另一个点在右的情况,计算距离看是否能够更新最小值。 以下是对

小胡同的诗 445

TI CC2642R蓝牙5.2模块实战:从零搭建智能门锁原型(附电路图)

本文详细介绍了如何基于TI CC2642R蓝牙5.2模块从零搭建智能门锁原型,涵盖硬件选型、低功耗配置、蓝牙安全交互等关键环节。通过CC2642R的高性能MCU和蓝牙5.2技术,开发者可实现低功耗、高安全性的智能门锁设计,并提供实用的电路图和PCB布局建议。

o5p6q的博客 109

HDU1007(分治算法)

Quoit DesignTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 43000 Accepted Submission(s): 11172Problem Description Have you ever played qu

MrBlank的ACM记事本 2138

5分钟快速验证lvgl界面:VScode模拟器极简配置法(免环境变量版)

本文介绍了一种5分钟快速验证LVGL界面的极简配置方法,使用VSCode模拟器免环境变量配置,适合UI设计师和产品经理快速预览界面效果。通过预编译的SDL2库和配置好的VSCode工程模板,实现开箱即用的LVGL界面验证,大幅提升工作效率。

weixin_30790841的博客 314

Win 11 Fastboot驱动的详细安装教程

Fastboot驱动的详细安装教程

水w的博客 1万+

HDU 1007 (分治递归)

之前做这题用了 讨巧的 方法,竟然也 accept 了,后来举出反例发现 那种解法有问题。 正确解法: 运用分治递归的思想,首先将 所有的点 按照x的大小顺序排好,相同的话,参照y的大小。 然后取中间的 一个点 作为分割线。 这时,结果可能有三种情况,第一,最短的点对 在 分割线 左边;第二,最短点对 在 分割线 右边; 第三,最短点对 跨越了 分割线,一左一右。 分别求出左边 和 右边

Jaster_wisdom的专栏 821

代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南

本教程介绍了如何使用 R 语言中的 tidymass 包进行代谢组学数据分析。tidymass 是一个专为液相色谱-质谱(LC-MS)数据设计的开源工具,提供从数据准备到统计分析的全流程支持。教程详细讲解了数据准备、数据处理、数据探索、数据清洗、代谢物注释、统计分析及结果输出的步骤。用户需准备 MS1、MS2 数据和样本信息表,并通过 tidymass 进行峰识别、峰分组、保留时间校正等操作。数据处理后,用户可进行数据探索、清洗和代谢物注释,最终通过统计分析发现潜在的生物标志物,并输出结果。教程还提供了代码

专注生信领域 1635

hdu 1007(计算几何)

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1007 题意:在平面上给你很多点,任意两点之间的最短距离。 分析: 一眼看到这个题想到暴力,二重循环,然后一看数据范围果断放弃,然后在网上查了一下就有一个方法可以在nlog(n)的方法求出,分治的思想,我现在听过分治就只在分治排序的那里听过。这个算法的原理是我们先对点进行按x大小进行排序,然后找

swust_Three的博客 480

Python爬虫教程:抓取地方政府网站的公开文件与政策信息

Web爬虫是指一种自动化脚本,用于模拟人类浏览器访问网页、提取网页内容的数据抓取工具。发送请求到目标网页;获取网页内容;解析网页内容,提取所需数据;将数据保存或进一步处理。爬虫可以抓取各种形式的数据,如文本、图片、文件等。本教程将重点展示如何抓取地方政府网站上公开的政策文件、公告等信息。许多政府网站都会采取一定的反爬虫措施,防止大量数据被爬取。IP封锁:如果短时间内大量请求来自同一IP,可能会被封锁。验证码:一些网站会使用验证码来验证访问者是否为机器人。动态加载。

2201_76125261的博客 1981

【ESP32使用MAX98357播放音频】

在物联网和智能家居领域,音频播放功能越来越受到重视。ESP32作为一款功能强大的微控制器,结合MAX98357音频放大器模块,可以实现高品质的音频播放。本文将详细介绍如何使用ESP32的I2S接口通过MAX98357进行音频播放。

vor234的博客 7529

HDU 1007(套圈 最近点对距离)

题意是求出所给各点中最近点对的距离的一半(背景忽略)。 用分治的思想,先根据各点的横坐标进行排序,以中间的点为界,分别求出左边点集的最小距离和右边点集的最小距离,然后开始合并,分别求左右点集中各点与中间点的距离,从这些距离与点集中的最小距离比较,求得最小距离,此处可按纵坐标排序,将纵坐标距离已经大于之前最小距离的部分都剪枝。 代码如下: 1 #include <bi...

b338865802883204的博客 361

模拟量输入功能块 S_ITR(Easy系列PLC完整ST源代码)

IN Input INT 输入数字量 1IN ISH INT 输入数字量上限 2IN ISL INT 输入数字量下限 3IN OSH REAL 输出工程量上限 4IN OSL REAL 输出工程量下限 5OUT OUTPUT REAL 输出工程量 6VAR temp1 REAL 临时变量1 7VAR temp2 REAL 临时变量2 8。

RXXW_Dor的博客 716

hdu 1007 && zoj 2107 Quoit Design [最近点对]

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007                    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1107

942

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ZOJ 2107 HDU 1007 最近点对

题意:给出100000以内个点,求出最近一对点的距离,然后除以2输出。 点数较多不能枚举,运用分治思想,先按照x排序,选出与当前点距离小于当前最优值的,再y排序更新最优值。按照这个思想写完3400ms,上网找了个优化到400+ms的。 #include #include #include #include #include using namespace std; #define maxn

韩小侠的专栏 已迁移至lssea.com 926

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

最近点对,zoj 2107,hdu1007

今天看《计算机算法设计与分析》第二版里的最近点对, 按着写了,可以过hud

fengyang0317的专栏 532

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

hdu 1007 zoj 2107 Quoit Design 求平面最近点对 分治法

本题题目很裸,只要求出平面中最近点对的距离,然后除以2就是答案,方法就是分治,具体的可以参见算法导论 简单分析:对于该问题的一个子问题,只需把当前点的集合再分成两部分,分的方法是:按照x(或者y)排序,然后分成了前一半和后一半,即相当于在这些点的中间做了一条垂线,然后算垂线左边的最近点对(设距离为d1),垂线右边的最近点对(设距离为d2),那么在当前情况下,最近点对可能出自左半部分的子问题,也可

renew 2099

最近点对问题

在二维平面上的n个点中,如何快速的找出最近的一对点,就是最近点对问题。     一种简单的想法是暴力枚举每两个点,记录最小距离,显然,时间复杂度为O(n^2)。     在这里介绍一种时间复杂度为O(nlognlogn)的算法。其实,这里用到了分治的思想。将所给平面上n个点的集合S分成两个子集S1和S2,每个子集中约有n/2个点。然后在每个子集中递归地求最接近的点对。在这里,一个关键的问题是如

lonelycatcher小站 3万+

HDU 1007:Quoit Design && ZOJ 2107:Quoit Design

传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1107

丧心病狂 943

最近点对问题(分治)

在二维平面上的n个点中,如何快速的找出最近的一对点,就是最近点对问题。     一种简单的想法是暴力枚举每两个点,记录最小距离,显然,时间复杂度为O(n^2)。     在这里介绍一种时间复杂度为O(nlognlogn)的算法。其实,这里用到了分治的思想。将所给平面上n个点的集合S分成两个子集S1和S2,每个子集中约有n/2个点。然后在每个子集中递归地求最接近的点对。在这里,一个关键的

sata1的专栏 738

HDU 1007

在二维平面上的n个点中,如何快速的找出最近的一对点,就是最近点对问题。 一种简单的想法是暴力枚举每两个点,记录最小距离,显然,时间复杂度为O(n^2)。 在这里介绍一种时间复杂度为O(nlognlogn)的算法。其实,这里用到了分治的思想。将所给平面上n个点的集合S分成两个子集S1和S2,每个子集中约有n/2个点。然后在每个子集中递归地求最接近的点对。在这里,一个关键的问题是如何实现分治法中的

muximuxi_kgsecond的专栏 458

HDU1007 ZOJ2107 Quoit Design【二分】

Quoit DesignTime Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 62203    Accepted Submission(s): 16413Problem DescriptionHave you ever played quoit...

海岛Blog 702

最近点对问题(hdu1007)

在二维平面上的n个点中,如何快速的找出最近的一对点,就是最近点对问题。     一种简单的想法是暴力枚举每两个点,记录最小距离,显然,时间复杂度为O(n^2)。     在这里介绍一种时间复杂度为O(nlognlogn)的算法。其实,这里用到了分治的思想。将所给平面上n个点的集合S分成两个子集S1和S2,每个子集中约有n/2个点。然后在每个子集中递归地求最接近的点对。在这里,一个关键的问题是如

herbertpotter的博客 451

ZOJ2107——Quoit Design&&HDU1007——Quoit Design

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2107 http://acm.hdu.edu.cn/showproblem.php?pid=1007 Quoit Design 题目大意:寻找最近点对。 直接套模板即可!!! #include #include #include #include

piaocoder 531

ZOJ 2107 HDU 1007 Quoit Design(最近点对)

最近点对的裸题 利用分治去搞搞即可 代码: #include #include #include #include using namespace std; const int N = 100005; struct Point { double x, y; void read() { scanf("%lf%lf", &x, &y); } }

Remilia's 739
上一篇: POJ 2187 旋转卡壳第一题
下一篇: POJ 3714 变种最近点对
Cxiaokai
博客等级 码龄15年 25粉丝 76原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值