博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【最小生成树+贪心】BZOJ1821: [JSOI2010]Group 部落划分 Group
阅读量:4313 次
发布时间:2019-06-06

本文共 800 字,大约阅读时间需要 2 分钟。

Description

聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗。只是,这一切都成为谜团了——聪聪根本就不知道部落究竟是如何分布的。 不过好消息是,聪聪得到了一份荒岛的地图。地图上标注了N个野人居住的地点(可以看作是平面上的坐标)。我们知道,同一个部落的野人总是生活在附近。我们把两个部落的距离,定义为部落中距离最近的那两个居住点的距离。聪聪还获得了一个有意义的信息——这些野人总共被分为了K个部落!这真是个好消息。聪聪希望从这些信息里挖掘出所有部落的详细信息。他正在尝试这样一种算法: 对于任意一种部落划分的方法,都能够求出两个部落之间的距离,聪聪希望求出一种部落划分的方法,使靠得最近的两个部落尽可能远离。
 

Solution

对于每一条边,要么在部落内要么在部落外,对于边权较小的边,应该让它在部落内。

于是按边权排序,用kruskal连接,直到小于k个连通块。

 

Code

1 #include
2 #include
3 #include
4 #define ll long long 5 using namespace std; 6 const int maxn=1005; 7 8 struct edge{ 9 int u,v;10 ll w;11 bool operator<(const edge&a)12 const{
return w

秒之。话说最近1A率好高,果然是我刷的题太水?

转载于:https://www.cnblogs.com/xkui/p/4562479.html

你可能感兴趣的文章
【Java基础】一个有意思的泛型方法Arrays.asList(T... a)
查看>>
Windows Internals 笔记——内核对象
查看>>
矩阵乘法、快速幂
查看>>
一周学会Mootools 1.4中文教程:(6)动画
查看>>
优秀的第二外语学习网站:Lang-8
查看>>
oracle存储过程杂记
查看>>
JPA @Id 和 @GeneratedValue 注解详解
查看>>
自定义Template
查看>>
su 和 su -
查看>>
MapReduce:共同好友详解
查看>>
python函数:匿名函数、函数递归与二分法、面向过程编程
查看>>
final、static、代码块、静态代码块、内部类、代码执行顺序
查看>>
LeetCode-Burst Balloons
查看>>
LeetCode-Bitwise AND of Numbers Range
查看>>
Windows Server 2012和2008中使用计划任务定时执行BAT批处理文件 定时备份mysql数据...
查看>>
费马小定理与GCD&LCM
查看>>
P1077 摆花
查看>>
zynq修改ramdisk文件系统
查看>>
C#测量程序运行时间及cpu使用时间
查看>>
并发编程
查看>>