HDU1007Quoit Design(最小點對)
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1007
求所有點中最近兩點的距離的一半;最小點對(nlog (n))演算法模板題目;
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 100001;
struct point{
double x,y;
}p[maxn],*a[maxn],*b[maxn];
bool cmpx (point *A,point *B)
{
if(A->x==B->x)
return A->y<B->y;
return A->x<B->x;
}
bool cmpy (point *A,point *B)
{
if(A->y==B->y)
return A->x<B->x;
return A->y<B->y;
}
inline double dis(point *a,point *b)
{
return sqrt((a->x-b->x)*(a->x-b->x)+(a->y-b->y)*(a->y-b->y));
}
inline double min(double a,double b)
{
return a < b ? a : b;
}
double solve(int l,int r)
{
if(l+1==r) return dis(a[l],a[r]);
if(l+1==r) return min(dis(a[l],a[r]),min(dis(a[l],a[l+1]),dis(a[l+1],a[r])));
int mid=(l+r)>>1;
double ans=min(solve(l,mid),solve(mid,r));
int i,j,cnt=0;
for(int i=l;i<=r;i++){
if(a[i]->x>=a[mid]->x-ans&&a[i]->x<=a[mid]->x+ans)
b[cnt++]=a[i];
}
sort(b,b+cnt,cmpy);
for(int i=0;i<cnt;i++){
for(int j=i+1;j<cnt;j++){
if(b[j]->y-b[i]->y>=ans)
break;
ans=min(ans,dis(b[i],b[j]));
}
}
return ans;
}
int main()
{
int n;
while(~scanf("%d",&n)&&n!=0){
for(int i=0;i<n;i++){
scanf("%lf%lf",&p[i].x,&p[i].y);
a[i]=&p[i];
}
sort(a,a+n,cmpx);
printf("%.2lf\n",solve(0,n-1)/2);
}
return 0;
}
相關文章
- 【分治 求最近點對】hdu 1007 Quoit Design
- 平面最近點對 & 最小周長三角形 & 曼哈頓距離最近
- 二分找最小絕對值
- 費馬點(到三角形頂點之和最小的點)
- 最小路徑可重複點覆蓋
- LSGAN:最小二乘生成對抗網路
- 春遊 C++(半對)(最小字典序)C++
- k個最小和;及數對數目分析
- 最大匹配、最小頂點覆蓋、最大獨立集、最小路徑覆蓋(轉)(再轉)
- ant design 錨點採坑一 無滾動效果
- 盤點8款最小的JavaScript前端開發框架JavaScript前端框架
- 樹上最小點覆蓋的一類問題
- 3.2點對點ppp
- 除了Material Design,Android Wear 2.0還有哪些看點?Material DesignAndroid
- Ant Design Vue Tree 選中子節點同時半選中父級節點Vue
- 資訊化基礎的最小熵值的散點聚集熵
- react手機端專案注意點,ant design-mobile框架React框架
- Design Systems 02 - 什麼是 Design Principles
- 點對點傳輸現狀,鐳速高速點對點傳輸解決方案
- CentOS 7最小化安裝對系統初始化CentOS
- 對Thrift的一點點理解
- Material DesignMaterial Design
- design for failureAI
- 系統設計(System Design)應該怎麼去應對面試?面試
- Leedcode-二叉搜尋樹的最小絕對差
- 快速求圖上最小點定聯通塊權值的Trick
- 我對EVE的一點點理解
- Ant Design 官方《Ant Design 實戰教程》釋出
- Relationship Database DesignDatabase
- Ant Design VueVue
- Responsive Web DesignWeb
- web design toolsWeb
- Material Design AnimationMaterial Design
- Effective Oracle by DesignOracle
- Material Design時代Material Design
- System design summary
- Design a Moore FSM
- System Design InterviewView