二分距离判断是否满足k个部落,注意double类型精度,可使用不开方,最终再开

#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i=x;i<=y;i++)
#define dec(i,x,y) for(register int i=x;i>=y;i--)
#define eps 1e-4
using namespace std;
const int N=;
inline int read(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x*f;}
int n,k,x[N],y[N],mx,my,fa[N];
inline int find(int x){
return fa[x]==x?x:fa[x]=find(fa[x]);}
inline int S(int x){return x*x;}
inline double dis(int i,int j){
return S(x[j]-x[i])+S(y[j]-y[i]);}
bool check(double mid){
rep(i,,n) fa[i]=i;int cnt=;
rep(i,,n)rep(j,,n)
if(dis(i,j)<=mid){
int xx=find(i),yy=find(j);
if(xx!=yy) fa[xx]=yy;}
rep(i,,n) if(find(i)==i) cnt++;
if(cnt<k) return ;return ;}
int main(){
double mx=0.0,my=0.0;
n=read();k=read();
rep(i,,n){
x[i]=read();y[i]=read();
mx=mx>x[i]?mx:x[i];
my=my>y[i]?my:y[i];}
double l=0.00,r=S(mx)+S(my),mid;
while(r-l>eps){
mid=(l+r)*0.5;
if(check(mid)) l=mid;
else r=mid;}
printf("%.2lf\n",sqrt(l));return ;
}

最新文章

  1. 搭建vpn环境:centos7+openvpn
  2. 洛谷 P1387 最大正方形 Label:奇怪的解法
  3. windows 下安装redis并且测试(php)
  4. iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
  5. python学习之路-day3
  6. UWP开发中的流媒体
  7. Linux之守护进程
  8. Unity3d Android程序嵌入Admob广告条
  9. ajax上传图片 jquery插件 jquery.form.js 的方法 ajaxSubmit; AjaxForm与AjaxSubmit的差异
  10. Postman interceptor
  11. &lt;hdu - 1232&gt; 畅通工程 并查集问题 (注意中的细节)
  12. linux备份文件脚本
  13. String的indexOf()用于获取字符串中某个子字符串的位置
  14. tomcat 配置本地路径映射
  15. ENVIRONMENT
  16. iOS- XKZoomingView 简单的图片缩放预览,支持横屏、长图【手势:单击、双击、放大缩小】
  17. - Fractal(3.4.1)
  18. tslint无法工作:Failed to load the TSLint library for the document
  19. ubuntu下交叉编译imagemagick
  20. 弦论(tjoi2015,bzoj3998)(sam(后缀自动机))

热门文章

  1. 洛谷P4243/bzoj1558 [JSOI2009]等差数列(线段树维护差分+爆炸恶心的合并)
  2. ComM(通信管理)和CanNm(network)
  3. 前端基础-- HTML
  4. 刚需,jackjsonjson转化内部类问题
  5. docker 拷贝镜像文件
  6. A1014. Waiting in Line
  7. 【CF131D】Subway
  8. Spring boot学习笔记之@SpringBootApplication注解
  9. Summary of Java basics review data
  10. POJ 3463 Sightseeing (次短路经数)