欢迎访问~原文出处——博客园-zhouzhendong

去博客园看该题解


题目传送门 - BZOJ1821


题意概括

  平面上有n个点,现在把他们划分成k个部分,求不同部分之间最近距离的最大值。

  两个部分的距离就是两个部分中的最近的点对的距离。

  n<=1000


题解

  我们把所有的点全部建边。

  然后我们要更新答案,就要尽量弄掉短的边。

  于是就按照kruscal那样从短的开始弄。

  当然要用并查集。

  最后答案就是剩余的有意义的边中最短的一条。

  注意最后的处理,我由于这个wa了好多次。


代码

#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
const int N=1000+5,M=N*N;
int n,k,fa[N];
struct Point{
int x,y;
}p[N];
int sqr(int x){
return x*x;
}
struct Edge{
int a,b,c;
}e[M];
bool cmp(Edge a,Edge b){
return a.c<b.c;
}
int getf(int k){
return fa[k]==k?k:fa[k]=getf(fa[k]);
}
int main(){
scanf("%d%d",&n,&k);
for (int i=1;i<=n;i++)
scanf("%d%d",&p[i].x,&p[i].y);
int cnt=0;
for (int i=1;i<=n;i++)
for (int j=i+1;j<=n;j++){
e[++cnt].a=i,e[cnt].b=j;
e[cnt].c=sqr(p[i].x-p[j].x)+sqr(p[i].y-p[j].y);
}
sort(e+1,e+cnt+1,cmp);
int tot=0;
for (int i=1;i<=n;i++)
fa[i]=i;
int i;
for (i=1;i<=cnt&&n-tot>k;i++){
int a=e[i].a,b=e[i].b;
if (getf(a)==getf(b))
continue;
fa[getf(a)]=getf(b);
tot++;
}
for (;i<=cnt&&getf(e[i].a)==getf(e[i].b);i++);
printf("%.2lf",sqrt(e[i].c));
return 0;
}

  

BZOJ1821 [JSOI2010]Group 部落划分 Group Kruskal的更多相关文章

  1. [BZOJ1821][JSOI2010]Group 部落划分 Group 最小生成树 贪心

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

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

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

  3. 1821: [JSOI2010]Group 部落划分 Group

    1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1308  Solved: 627[Su ...

  4. 洛谷 1821: [JSOI2010]Group 部落划分 Group

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

  5. 【bzoj1821】[JSOI2010]Group 部落划分 Group Kruskal

    题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了——聪 ...

  6. 【最小生成树+贪心】BZOJ1821: [JSOI2010]Group 部落划分 Group

    Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...

  7. BZOJ1821 [JSOI2010]Group 部落划分 Group 【最小生成树】

    题目 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了--聪聪根 ...

  8. 【BZOJ】1821: [JSOI2010]Group 部落划分 Group(最小生成树+贪心)

    http://www.lydsy.com:808/JudgeOnline/problem.php?id=1821 这题裸题. 本题要求最短距离最长,很明显,我们排序. 这里存在贪心,即我们把边权最小的 ...

  9. 【BZOJ 1821】 [JSOI2010]Group 部落划分 Group

    Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...

  10. [JSOI2010]Group 部落划分 Group

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 3661  Solved: 1755[Submit][Status][Discuss] Descripti ...

随机推荐

  1. MyBatis联合查询和使用association 进行分步式查询

    查询Emp的同时,查出emp对应的部门Department 方法1:联合查询,使用级联属性封装结果集 <!-- 联合查询,使用级联属性封装结果集 type:要自定义规则的javaBean类型 i ...

  2. Elastic Job入门(2) - 使用

    运维平台 elastic-job-lite-console-${version}.tar.gz可通过mvn install编译获取,下载源码,进入console目录,执行: mvn clean ins ...

  3. 2018-2019-2 网络对抗技术 20165320 Exp2 后门原理与实践

    后门原理与实践 windows获取Linux操作Shell 获取本机的IP netcat介绍:一个进行基本的TCP.UDP数据收发的工具 相关的参数与具体用法 windows打开监听: ncat.ex ...

  4. Java 注解 (Annotation)你可以这样学

    注解语法 因为平常开发少见,相信有不少的人员会认为注解的地位不高.其实同 classs 和 interface 一样,注解也属于一种类型.它是在 Java SE 5.0 版本中开始引入的概念. 注解的 ...

  5. Django 利用管理器实现文章归档

    Django管理器:class Manager 管理器是Django的模型进行数据库查询的接口,Django应用的每个模型都拥有至少一个管理器.默认情况下,Django为每个模型类添加一个名为obje ...

  6. [转]GDB-----2.watchpoint

    TODO需要在ARM下验证 1. 前言 watchpoint,顾名思义,其一般用来观察某个变量/内存地址的状态(也可以是表达式),如可以监控该变量/内存值是否被程序读/写情况. 在gdb中可通过下面的 ...

  7. xpath与nodejs解析xml

    测试xpath的工具 http://www.freeformatter.com/xpath-tester.html#ad-output http://www.xpathtester.com/test ...

  8. ASP.NET Core Identity 实战(3)认证过程

    如果你没接触过旧版Asp.Net Mvc中的 Authorize 或者 Cookie登陆,那么你一定会疑惑 认证这个名词,这太正式了,这到底代表这什么? 获取资源之前得先过两道关卡Authentica ...

  9. (网络编程)基于tcp(粘包问题) udp协议的套接字通信

    import   socket 1.通信套接字(1人1句)服务端和1个客户端 2.通信循环(1人多句)服务端和1个客户端 3.通信循环(多人(串行)多句)多个客户端(服务端服务死:1个客户端---&g ...

  10. SYN flooding引发的网络故障

    故障现象: 1.应用无法通过外网访问,应用服务器所在的内网网段之间(web和db数据库之间访问丢包严重)不能互相访问 其他网段正常 2.怀疑是网络设备问题,将连接该网段设备的交换机重启后故障依旧,通过 ...