P4047-[JSOI2010]部落划分【最小生成树】
正题
题目链接:https://www.luogu.org/problemnew/show/P4047
题目大意
将nnn个点分成kkk个部分,使得最近的两个部分的距离尽可能远。
解题思路
最小生成树连接到只剩下kkk个部分时停止就好了。
codecodecode
#include<cstdio>
#include<cmath>
#include<algorithm>
#define N 1010
#define p(c) ((c)*(c))
using namespace std;
int n,k,x[N],y[N],ans,father[N],cnt,now;
struct node{int x,y;double w;
}a[N*N];
double dist(int a,int b)
{return sqrt((double)p(x[a]-x[b])+p(y[a]-y[b]));
}
int find(int x)
{if(father[x]==x) return x;return find(father[x]);
}
void unionn(int x,int y)
{int fa=find(x),fb=find(y);if(fa>fb) father[fa]=fb;else father[fb]=fa;
}
bool cmp(node x,node y)
{return x.w<y.w;}
int main()
{scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]);for(int i=1;i<=n;i++)father[i]=i;k=n-k+1;for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++)a[++cnt]=(node){i,j,dist(i,j)};sort(a+1,a+1+cnt,cmp);ans=2147483647;for(int i=1;i<=cnt;i++){if(find(a[i].x)!=find(a[i].y))k--,unionn(a[i].x,a[i].y);if(!k){printf("%.2lf",a[i].w);return 0;}}
}
P4047-[JSOI2010]部落划分【最小生成树】相关推荐
- BZOJ 1821: [JSOI2010]Group 部落划分 Group【MST】
1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MB Description 聪聪研究发现,荒岛野人总是过着群 ...
- bzoj 1821: [JSOI2010]Group 部落划分
1821: [JSOI2010]Group 部落划分 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 2484 Solved: 1165 [Submi ...
- Acwing 2382. 部落划分
题目描述: 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗. 只是,这一切都成为谜团了- ...
- C++之路进阶——bzoj1821(部落划分)
F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser hyxzc Logout 捐赠本站 Notice:1:由于本OJ ...
- 【c++图论】【口袋的天空】【部落划分】
目标: 今天的两道题做法和思路有相同之处,合并在一起学习可以帮助更快的掌握图论中克鲁斯卡尔算法的要点和据具体实现步骤,下面来看看题目: 第一题[口袋的天空] 题目如下 题目背景 小杉坐在教室里,透过口 ...
- BZOJ 1821 [JSOI2010] Group 部落划分 Group
最小生成森林? 个人感觉跟最小生成树差不多.需要分成k个联通块,让联通块之间距离最大就让联通块内距离尽可能小.一颗最小生成树是N-1条边,分成k个块需要切k-1条,就是一个n-k条边的最小生成森林,然 ...
- BZOJ1821 [JSOI2010]Group 部落划分 Group Kruskal
欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1821 题意概括 平面上有n个点,现在把他们划分成k个部分,求不同部分之间最近距离的最大值. 两个部 ...
- bzoj 1821 部落划分
评测:http://www.lydsy.com/JudgeOnline/problem.php?id=1821 分析一下题目: 因为最后答案是距离最近的部落的距离最远,即尽量把短的边合并进部落中. 一 ...
- 2021年SWPUACM暑假集训day3最小生成树算法
前言 视频链接 视频连接:https://www.bilibili.com/video/BV1wV411s7Pe 练习题单 SWPUOJ题单:http://acm.mangata.ltd/traini ...
最新文章
- 比特币如何实现—《区块链历史链条》2
- Squirrel的安装(windows上Phoneix可视化工具)
- php 效率最高的递归,PHP 递归效率分析_PHP教程 - microtime
- 项目开发涉及循坏的小思路
- JavaWeb第五讲 Web核心基础之HTTP协议
- 48岁的C语言,你知道它背后的历史吗?
- 配置FTP服务2(vsftpd 配置虚拟账号)
- Linux系统中输出输入的管理
- 【luogu P2764 最小路径覆盖问题】 模板
- Android xml manifest属性详解
- ffmpeg系列之编译安卓版ffmpeg库
- 完全卸载vs2015
- 24点递归实现(c语言)
- ios下拉效果滑动滚出页面
- Mac新手必备技巧之如何关闭Mac屏幕亮度自动调节功能
- scikit-learn:4.3. Preprocessing data(standardi/normali/binari..zation、encoding、missing value)
- 前端开发之JS篇(二)
- 大数据学习路线及全套视频教程
- Vero quibusdam eos alias.
- 7-1 解密英文藏头诗 (15 分)
热门文章
- contos6.5卸载php7,centos8 测地卸载php5.6 与卸载php7
- laya 怎么生成签名_PHP开发API接口签名生成及验证
- Linux网络模块全局变量,()不是Linux系统的特色.
- java短信接口 调用_带你了解短信接口的调用
- linux删除第二次出现的字符,linux下 怎样删除文件名中包含特殊字符的文件
- 缩减oracle日志,[20180829]减少日志生成量.txt
- 后端学习 - 计算机网络
- map容器中删除一个元素(value)
- 7-48 银行排队问题之单窗口“夹塞”版 (30 分)(思路和详解+map做法)来呀Baby!
- python函数参数那些事,关键字参数与位置参数