P1429

题目题解
but my code is outing

#include<bits/stdc++.h>
using namespace std;
const int B=2e9;
struct dot{int x,y;
}a[200010],ddt[200010];
inline int ass(int a){return a>0?a:-a;}
inline double dis(dot i,dot j){return sqrt((i.x-j.x)*(i.x-j.x)+(i.y-j.y)*(i.y-j.y));}
bool cmp(dot a,dot b){return a.x==b.x?a.y<b.y:a.x<b.x;}
bool cmp2(dot a,dot b){return a.y<b.y;}
double ans=B;
double fz(int l,int r){if(l==r)return B;if(l+1==r)return dis(a[l],a[r]);int m=(l+r)>>1,k=0;double d=min(fz(l,m),fz(m+1,r));for(int i=l;i<=r;i++)if(ass(a[m].x-a[i].x)<d)ddt[k++]=a[i];sort(ddt,ddt+k,cmp2);for(int i=0;i<k;i++)for(int j=i+1;j<k&&ddt[j].y-ddt[i].y<d;j++)d=min(d,dis(ddt[i],ddt[j]));return d;
}
int main() {int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);sort(a+1,a+n+1,cmp);printf("%.4lf",fz(1,n));return 0;
}

std:

#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn=1000001;
const int INF=2 << 20;
int n,temp[maxn];
struct Point {double x,y;
} S[maxn];
bool cmp(const Point &a,const Point &b){if(a.x == b.x)return a.y<b.y;else return a.x<b.x;
}
bool cmps(const int &a,const int &b){return S[a].y<S[b].y;
}
double min(double a,double b){return a<b ? a : b;
}
double dist(int i,int j){double x=(S[i].x-S[j].x)*(S[i].x-S[j].x);double y=(S[i].y-S[j].y)*(S[i].y-S[j].y);return sqrt(x+y);
}
double merge(int left,int right){double d=INF;if(left == right)return d;if(left+1 == right)return dist(left,right);int mid=left+right >> 1;double d1=merge(left,mid);double d2=merge(mid+1,right);d=min(d1,d2);int i,j,k=0;for(i=left;i <= right;i++)if(fabs(S[mid].x-S[i].x)<d)temp[k++]=i;sort(temp,temp+k,cmps);for(i=0;i<k;i++)for(j=i+1;j<k && S[temp[j]].y-S[temp[i]].y<d;j++){double d3=dist(temp[i],temp[j]);if(d>d3)d=d3;}return d;
}
int main(){scanf("%d",&n);for(int i=0;i<n;i++)scanf("%lf%lf",&S[i].x,&S[i].y);sort(S,S+n,cmp);return !printf("%.4lf\n",merge(0,n-1));
}

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

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

相关文章

2352732 项目创新

一、项目及来源 我选取的项目是一个用Java语言开发的拼图小游戏,来自https://www.cnblogs.com/get-elaina/p/17854791.html 该拼图游戏实现了拼图的打乱功能和移动功能,用户可以通过↑ ↓ ← → 键来对图片进行移动,并记录下用户所使用的步数,当用户将拼图复位后,游戏步数…

spring @conditional介绍及使用

💖简介 @Conditional 是 Spring 框架中用于条件化注册 Bean的核心注解,它允许开发者根据特定条件决定是否将某个Bean注册到 Spring 容器中。这一机制在实现多环境配置、模块化加载、动态依赖管理等场景中非常有用。 📖作用条件控制:根据预设条件(如环境变量、类路径、系…

7.1.2 AlexNet

本质和主要改进见下因为模型更大了,所以要用丢弃法做正则;\(\text{ReLu}\)则比\(\text{Sigmoid}\)更能支撑更深的网络(解决了梯度消失);最大汇聚层则让输出更大,梯度更大,训练更容易 还有一些主要区别如下步长也很大的原因也是当时的算力其实不是很够池化层更大了就允许…

学生信息管理项目更改

一、来源:原先的作品来自于大二上同寝室计科同学的期末大作业项目 二、运行环境基于intelij为运行软件,maven做框架依赖,tomacat浏览器展示,mysql数据库 运行截图由于代码较多,此处只展示部分代码 1、addStudent.jsp 点击查看代码 <%@ page language="java" …

Linux相关杂记

Windows通过ssh远程linux的Ubuntu 1.在Ubuntu上安装SSH服务 sudo apt update sudo apt insall openssh-server2.启动ssh sudo systemctl start ssh3.设置开机自启 sudo systemctl enable ssh2.获取Ubuntu的IP地址 ip a3.windows上使用SSH客户端 ssh 用户名@IP地址#####愿你一寸…

笔记本外接显示器,左右位置设置

笔记本电脑扩展的显示器 如何左右分屏或上下分屏显示? 留意屏幕布局。 若笔记本屏幕在左而外接显示器在右,则无需调整;反之,则需用鼠标选中2号屏,按住左键拖动至1号屏的左侧。

题解:P4586 [FJOI2015] 最小覆盖双圆问题

写了这么久终于过了,发篇题解记录一下。 第一次写黑题题解,写的不好请见谅。 目录本题思路 三点定圆 最小圆覆盖 关于最小圆覆盖时间复杂度 回到本题 二分法划分点集 总时间复杂度 最小覆盖双圆问题代码本题思路 首先,这道题叫做最小覆盖双圆问题,这道题涉及到一个叫做最小…

sed undefined label on MacOS, FreeBSD

A quick fix is to prepend your string expression with an empty string: For example: instead of sed -i s/foo/bar/g text.txt write: sed -i s/foo/bar/g text.txtThis should work across different OS (Linux, MacOS, Windows) --dopexxx来源:http://stackoverflow.…

软工作业1:自我介绍+软工5问

这个作业属于哪个课程 软工23级这个作业要求在哪里 自我介绍+软工五问这个作业的目标 熟悉博客园以及Github的相关操作,了解软件工程相关内容1.自我介绍兴趣爱好:羽乒人,爱听歌,电影,楷书,行楷 编程语言:C,JAVA 目标:后端开发2.软工五问软件工程在对就业上的帮助的具体…

对“推箱子”小游戏代码的改进

一.代码来源 https://www.cnblogs.com/heyu123/p/14844284.html 二.运行环境 DEV--C++ 三.原代码及其运行结果 原代码: int map[8][8]={{1,1,1,1,1,1,1,1},//0 空地 {1,0,0,0,1,0,0,1},//1 墙 {1,0,1,0,1,4,3,1},//3 目的地 {1,0,0,0,0,4,3,1},//4 箱子 {1,0,1,0,1,4,3,1},//5…

软件开发与创新课程设计作业——软件逆向设计

一、来源:软件工程2班李鹏飞去年的大作业`点击查看代码 #include <iostream> #include <string> #include <fstream> using namespace std;//定义客户类型 enum eGuestType // 在高版本VS中,需要用enum class,在低版本的vs中,直接用enum也可以 {e_member…

LVI_SAM 虚拟机安装复现(一)

0. 前言 高能警告:LVI_SAM 的安装步骤是繁琐的,一个坑接着一个坑,请预留48+小时的安装时间,和80%以上的san值。非战斗人员请尽快撤离。 预备知识:虚拟机安装步骤,ROS基本概念,Makefile工作原理 没有预备知识的话,也没关系,本文也不会给你解释的( 本文是第一大步骤,即…