//1.只有一个点,那就是无穷
//2.只有两个点,那就是这两点间距离
//3.其它情况 ,左边,右边,跨中间(先小范围比较x,然后在这一小范围排序纵坐标,更新最近值)
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
struct grou{
double x;
double y;
}group[100004],temp[100004];
double cmp(grou a,grou b)
{
return a.x<b.x;
}
double comp(grou m,grou n)
{
return m.y<n.y;
}
double dist(grou a,grou b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double closest(int l,int r)//下标l到r的最短距离
{
double dis=0x3ffffff;
if(l==r) return dis;
if(l+1==r) return dist(group[l],group[r]);
int mid=(l+r)/2;
double d1=closest(l,mid);
double d2=closest(mid+1,r);
dis=min(d1,d2);
int k=0;
//接下来处理在mid附近最小范围的点,也就是距离比dis小,先比较横坐标,然后是纵坐标
for(int i=l;i<r;
第一个专题基础算法分治hdu 1007
最新推荐文章于 2022-02-01 15:29:41 发布
本文详细探讨了HDU 1007问题的解决方案,重点介绍了如何运用分治策略来解决这一算法挑战。
摘要由CSDN通过智能技术生成