二分距离判断是否满足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 ;
}

luogu 4047 部落划分 二分答案的更多相关文章

  1. [luogu]P2680 运输计划[二分答案][树上差分]

    [luogu]P2680 [NOIP2015]运输计划 题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n ...

  2. Luogu P1084 疫情控制 | 二分答案 贪心

    题目链接 观察题目,答案明显具有单调性. 因为如果用$x$小时能够控制疫情,那么用$(x+1)$小时也一定能控制疫情. 由此想到二分答案,将问题转换为判断用$x$小时是否能控制疫情. 对于那些在$x$ ...

  3. luogu P2680 运输计划 (二分答案+树上差分)

    题目背景 公元 20442044 年,人类进入了宇宙纪元. 题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间 ...

  4. Luogu P1663 山【二分答案/实数域】By cellur925

    题目传送门 现在要在山上的某个部位装一盏灯,使得这座山的任何一个部位都能够被看到. 给出最小的y坐标,如图的+号处就是y坐标最小的安装灯的地方. 这个题嘛...今年省选前学姐来我们(破烂)的机房串门的 ...

  5. BZOJ 1821 部落划分(二分+并查集)

    答案是具有单调性的. 因为最近的两个部落的距离为mid,所以要是有两个野人的距离<mid,则他们一定是一个部落的. 用并查集维护各联通块,如果最后的联通块个数>=k,那么mid还可以再小点 ...

  6. luogu P1316 丢瓶盖 |二分答案

    题目描述 陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢? 输入格式 ...

  7. B1821 [JSOI2010]Group 部落划分 Group 二分答案&&并查集

    这个题正解是最小生成树,但是...最大值最小?一看就是二分答案啊!不用多想,直接二分答案加暴力验证就行了. 题干: Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒 ...

  8. [Bzoj1821][JSOI2010]Group 部落划分 Group(并查集)(二分答案)

    1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2949  Solved: 1392[S ...

  9. 【BZOJ1821】[JSOI2010]部落划分(二分,并查集)

    [BZOJ1821][JSOI2010]部落划分(二分,并查集) 题面 BZOJ 洛谷 题解 二分答案,把距离小于二分值的点全部并起来,\(\mbox{check}\)一下是否有超过\(K\)个集合就 ...

随机推荐

  1. 【mysql】数据库中的DML DDL DCL TCL 及 Online DDL

    DDL(data definition language) : 数据库定义语言 用来定义创建操作表的时候用到的一些sql命令,比如CREATE.ALTER.DROP等等. DML(data manip ...

  2. shell中定义变量用双引号和单引号以及不用引号的区别

    1. 单引号 使用单引号的情况下,不管里面的是否有变量或者其他的表达是都是原样子输出 2. 双引号 如果其定义变量的时候使用双引号的话,则里面的变量或者函数会通过解析,解析完成后再输出内容,而不是把双 ...

  3. Ubuntu18.04 下 VirtualBox or VMWare 虚拟化问题

    This host supports Intel VT-x, but Intel VT-x is disabled.Intel VT-x might be disabled if it has bee ...

  4. A1114. Family Property

    This time, you are supposed to help us collect the data for family-owned property. Given each person ...

  5. 【洛谷P1403】约数研究

    题目大意:求\[\sum\limits_{i=1}^n\sum\limits_{d|i}1\] 题解:交换求和顺序即可. \[\sum\limits_{i=1}^n\sum\limits_{d|i}1 ...

  6. 常用工具类(System,Runtime,Date,Calendar,Math)

    一.System: 一个java.lang包中的静态工具类. 三大字段: static PrintStream err “标准”错误输出流. static InputStream in “标准”输入流 ...

  7. selenium自动化测试原理和设计的分享

    昨天参加了公司的一个自动化测试的分享,有一些收获,记录一下. 1.主流的web端的UI自动化测试工具 基于浏览器API: selenium2.0,Watir(IE Driver) 基于JS 进行驱动: ...

  8. halcon几何变换(仿射变换)

    旋转.平移.镜像.缩放.斜切,可参考https://blog.csdn.net/machaoyu86/article/details/51182473 仿射变换前,需要获得仿射变换矩阵. 关于shap ...

  9. 快速傅里叶变换(FFT)_转载

    FFTFFT·Fast  Fourier  TransformationFast  Fourier  Transformation快速傅立叶变换 P3803 [模板]多项式乘法(FFT) 参考上文 首 ...

  10. 购物demo

    这段时间从一个模板网站上拷了个购物系统的demo,试着写了一下,发现div+css布局还真是精妙无穷呢.设置好了布局,加上动态效果也只是锦上添花而已.所以,接下来的重点就是布局了! 我把网址粘上去:h ...