P4047 [JSOI2010]部落划分

2023-11-08

题目链接

这道题一看最小值最大,很容易被误导进二分答案的思路,但实际上并不需要二分答案。

其实正解是最小生成树,我们先预处理出原图的最小生成树,因为要分k个部落,所以我们先把最小的n-k边先全部选走。因为我们用kruskal的话要用到并查集,这样我们就可以判断他们是否在同一部落中。然后我们再枚举剩下未选的边,再看这个边连接的两个端点是否在同一集合内,输出那个最先找到的值即可。复杂度就是krukal的复杂度O(klogn),由于我们选不完所有边,还要比这个小一些。

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+7;
struct node{
    int x,y;
    double val;
}edge[maxn*3];
double dist(int x,int xxx,int y,int yyy){
    return (double)sqrt((x-xxx)*(x-xxx)*1.0+(y-yyy)*(y-yyy)*1.0);
}
bool cmp(node a,node b){
    return a.val<b.val;
}
int fa[maxn];
int get(int x){
    if(x==fa[x]) return x;
    else return fa[x]=get(fa[x]);
}
int xx[maxn],yy[maxn];
int n,k,cnt;
void kruskal(){
    int tot=0;
    for(int i=1;i<=cnt;i++){
        int f1=get(edge[i].x);
        int f2=get(edge[i].y);
        if(f1!=f2){
            fa[f1]=f2;
            tot++;
            if(tot==n-k) break;
        }
    }
    for(int i=n-k+1;i<=cnt;i++){
        if(get(edge[i].x)!=get(edge[i].y)){
            printf("%.2lf\n",edge[i].val);
            break;
        }
    }
}
int main(){
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++) fa[i]=i;
    for(int i=1;i<=n;i++){
        scanf("%d%d",&xx[i],&yy[i]);
    }
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            edge[++cnt].x=i;
            edge[cnt].y=j;
            edge[cnt].val=dist(xx[i],xx[j],yy[i],yy[j]);
        }
    }
    sort(edge+1,edge+1+cnt,cmp);
    kruskal();
    return 0;
} 
View Code

 

转载于:https://www.cnblogs.com/LJB666/p/11628175.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

P4047 [JSOI2010]部落划分 的相关文章

  • mysql怎么卸载_怎样把mysql卸载干净?Mysql怎么卸载干净重装?

    很多朋友装mysql数据库时出现无法安装的情况 更可怕的是删除相关文件仍然无法安装 很伤脑筋 相信很多朋友都有过这种经历 其实导致数据无法安装的原因大多数是因为之前安装的Mysql数据没有卸载干净 导致第二次安装不 那么mysql安装失败后
  • 20、numpy——IO

    NumPy IO Numpy 可以读写磁盘上的文本数据或二进制数据 NumPy 为 ndarray 对象引入了一个简单的文件格式 npy npy 文件用于存储重建 ndarray 所需的数据 图形 dtype 和其他信息 常用的 IO 函数
  • C++笔记——std::min_element和std::max_element

    https blog csdn net breeze5428 article details 25918925 参考网页 http en cppreference com w cpp algorithm min element 主要有两种用
  • LangChain 手记 Conclusion结语

    整理并翻译自DeepLearning AI LangChain的官方课程 Conclusion Conclusion 结语 本系列短课展示了大量使用LangChain构建的大语言模型应用 包括处理用户反馈 文档上的问答系统甚至使用LLM来决
  • 艾伦·麦席森·图灵——如谜的解谜者

    艾伦 麦席森 图灵 Alan Mathison Turing 1912年6月23日 1954年6月7日 英国数学家 逻辑学家 被称为计算机科学之父 人工智能之父 科学美国人 这样评价图灵性情矛盾的一生 个人生活隐秘又喜欢大众读物和公共广播
  • Android 刘海屏全屏适配(沉溺式状态栏,隐藏状态栏)

    RequiresApi Build VERSION CODES LOLLIPOP override fun onCreate savedInstanceState Bundle super onCreate savedInstanceSta
  • 01-----Ubuntu16.04安装Gnome桌面环境

    从这篇起 我将使用Ubuntu16 04来搭建流媒体开发的环境 这是Ubuntu16 04空虚拟机的开始文章虚拟机下配置linux的网络上网 包括ssh gcc g 的安装 几乎所有软件的搭建都是从零开始 上面安装好能上网后 本篇将讲述关于
  • E: Sub-process /usr/bin/dpkg returned an error code (1)

    执行命令 apt update apt dist upgrade apt update apt dist upgrade 是由于apt get安装软件时出现了类似于 注意 根据搜索得知 var lib dpkg info下保存有各个软件包的
  • 2022年前端面试题整理,持续更新中

    端面试题整理 已同步到掘金 CSDN 掘金地址 https juejin cn post 7075332630417244173 CSDN 地址 https blog csdn net z1832729975 article details
  • 一种3D视频格式转换(H264 MVC至SBS / OU)方案

    本文尚处于草稿状态 提前公开仅供预览 前言 两年前我就想写这个话题的文章 但一直拖延到现在 因为我在等待SkyBox VR Player支持3D MVC 我在想 如果3D播放器已经支持播放3D MVC格式 那么MVC至SBS转换就没有必要
  • spring中配置DButil数据源

    1 pom引入
  • web服务器群集-Nginx

    关于Nginx 一款高性能 轻量级Web服务软件 系统资源能耗低 对HTTP并发连接的处理能力高 单台物理服务器可支持3000 5000个并发请求 1 Nginx编译安装 安装支持软件 yum y install pcre devel zl
  • Maven打包时出现Process terminated错误

    Maven打包时出现Process terminated错误 检查maven的配置文件 多引入了一次控制器 编码错误 切点表达式错误 用maven打包时出现Process terminated样式的错误 报错如下 查看报错信息 检查mave
  • HDS 多路径软件HDLM for AIX安装及配置—精简范例篇

    HDS 多路径软件HDLM for AIX安装及配置 精简范例篇 aix 6 HDS VSP HDLM DLManager mpio rte HDLM Hitachi Dynamic Link Manager 是HDS公司提供的安装在主机端
  • Spring Data JPA学习笔记

    文章目录 Spring Data JPA 环境搭建 基本CRUD 分页 排序 基于规则自定义方法 基于Query注解方法 Spring Data JPA JPA字面意思是JAVA持久层API JPA定义了一系列标准 建立了实体类和数据库中表
  • CentOS7安装使用中文字符集的方法(转)

    通常安装Linux系统本着最简化安装 会默认使用英文字符集 不会安装中文字符集等其他字符 但是在一些必要情况下需要中文的支持 本文将以CentOS7为例演示下如何安装中文字符集 1 首先使用locale命令看看当前系统所使用的字符集 如图可
  • C语言 合并有序数组

    将2个已知有序的数组合并为一个新的有序数组 已有两个数组 arr1 和 arr2 要求将两个数组中元素合并到数组 arr3 中 合并时要去除数组中的重复数据 include
  • NLP学习(十四)-NLP实战之文本分类-中文垃圾邮件分类-Python3

    一 文本分类实现步骤 定义阶段 定义数据以及分类体系 具体分为哪些类别 需要哪些数据 数据预处理 对文档做分词 去停用词等准备工作 数据提取特征 对文档矩阵进行降维 提取训练集中最有用的特征 模型训练阶段 选择具体的分类模型以及算法 训练出
  • requests爬取网易云音乐

    访问网易云音乐 查找搜索接口的信息 发现搜索的接口没有想要的信息 我又去找其他接口 最后发现信息在这里 而且请求的接口是post的请求头 我换了种方式爬取 用selnium的方式 最后的成果是这样的 不打了 手累 不懂得可以问我 impor
  • 设置激光驱动器电流

    激光二极管在驱动电流过大的情况下较容易损坏 所以在调整激光驱动电路时 用测试负载来代替激光二极管 测试负载与激光二极管类似 但不像激光二极管会被过量的电流损坏 当我们将驱动电流设置到合适之后 测试负载便可以用激光二极管代替 测试负载 测试负

随机推荐

  • Unity3D 旋转天空盒的方法

    天空盒是不能旋转的 但我们可以旋转摄像机来达到天空盒的旋转效果 实现方法如下 1 我们创建一个摄像机名为Skybox Camera 2 主摄像机Main Camera的Clear Flags设置为Don t Clear 3 Skybox C
  • 【离线文本转语音文件】java spring boot jacob实现文字转语音文件,离线文本转化语音,中英文生成语音,文字朗读,中文生成声音,文字生成声音文件,文字转语音文件,文字变声音。

    1 实现效果如下 输入文字 支持中英文 点击转换生成 wav文件 点击下载到本地就可 生成后的音频文件播放 时长1分8秒 2 实现代码 这次采用jacob实现 相比百度AI需要联网 本项目定位内网环境实现 所以最终采jacob 1 环境配置
  • LaTeX数学公式的符号表示

    引言 由于CSDN的Markdown编辑器能轻松地支持 LATEX LaTeX的公式表示 因此 今天我们来细数一下 LATEX LaTeX数学公式的符号表示 以便大家以后随时查用 1 强调模式 a a hat a check a a a a
  • Keywords Search 【HDU - 2222】【AC自动机模板】

    题目链接 学习AC自动机的第一道题 可能跟广大学友是一样的 让我知道了什么是AC自动机 具体讲一下吧 它就是用来求多串匹配的 而KMP只是求单串匹配的 相当于是在KMP上做了优化 之后 就是怎么构造AC自动机了 知道它就是在一棵字典树上做文
  • 最大连续子数组和

    最大连续子数组和 动态规划 迭代求出以i结尾的最大连续和 i 1结尾的最大连续和时和前一位的状态有关 列出递推式即可求解 class Solution public int FindGreatestSumOfSubArray vector
  • PHP多个三目运算符的坑

    废话不多说直接上代码 source gt item source self 自建 item source erp 精选 item source free 免费 大牌好货 有一天看到项目里面的代码 这样写的 多个三目运算符一起限定 项目一直在
  • ChatGPT将要颠覆的前十个行业

    ChatGPT将要颠覆的前十个行业 内容创作 ChatGPT可以生成高质量的文章 新闻和其他类型的文本内容 改变传统内容创作行业 在线客服 ChatGPT可以提供智能 高效的客户服务 改善用户体验 降低企业成本 教育领域 ChatGPT可作
  • react native 实现拖拽排序

    先上效果图 意思意思 其实原理很简单 没有想的那么难 大家在改造的时候 请注意 this offset 的值 因为它关系到查找目标box的index 原理 手势释放时 所在的坐标值来推算出目标box的Index 本文代码可读性还需要改造 代
  • assert函数_【C语言笔记】assert怎么用?

    一 什么是assert 编写代码时 我们总是会做出一些假设 断言 assert 就是用于在代码中捕捉这些假设 可以将断言看作是异常处理的一种高级形式 断言表示为一些布尔表达式 程序员相信在程序中的某个特定点该表达式值为真 可以在任何时候启用
  • 华为RH2288 V3服务器新加硬盘不识别

    华为服务器RH2288 V3原本6块本地硬盘配置RAID5 后新加入2块本地硬盘配置RAID RAID卡类型LSI SAS3108 时 不能被BIOS Configuration Utility界面VD Mgmt页签识别到处理方法 首先 检
  • 别收藏 Excel 函数大全了!北大硕博生为帮助女朋友,开发了个 ChatExcel,一键处理表格...

    整理 苏宓 出品 CSDN ID CSDNnews 众所周知 Excel 是一款应用广泛的办公软件 也是世界上使用最广泛语言的编程语言 还是一款优秀的低代码工具 然而 想要真正玩转它 不仅需要学会各种各样的 Excel 函数公式 也需要熟练
  • 解决SCP命令需要输入密码的问题

    需求 主机A ipA 文件复制到主机B ipB step1 主机A生成配对秘钥 在root目录下执行 ssh keygen t rsa step 2 将 ssh 目录中的 id rsa pub 文件复制到 主机B 的 ssh 目录中 并改名
  • 【蓝桥杯(51) STC15F2K60S2】之 “独立按键实验“

    相关代码 include STC15F2K60S2 H unsigned char KeyNumber unsigned char value unsigned char code SMG weixu 18 0xc0 0xf9 0xa4 0
  • [AI医学] llm-medical-data:用于大模型微调训练的医疗数据集

    关键词 医疗数据集 大模型微调训练 开源项目 llm medical data 用于大模型微调训练的医疗数据集 项目地址 https github com donote llm medical data 该项目主要参考了几篇关于医学领域大模
  • root用户登录tab有时无法补齐

    ubuntu bash 自动补齐 打开 bashrc把最后的注释 etc bash completion的三行打开 debian下增强bash的自动补全功能 根据zhllg的提示 在debian下增强了自动补齐功能 现在很多命令的参数也可以
  • Scrapy爬虫部署、相关api调用、以及gerapy的作用和使用流程总结

    scrapy部署介绍相关的中文文档地址 https scrapyd readthedocs io en latest 安装相关库 scrapyd 是运行scrapy爬虫的服务程序 它支持以http命令方式发布 删除 启动 停止爬虫程序 而且
  • 函数返回引用

    include
  • QString转Char*字符串

    QString转Char 字符串 在Qt下将QString转char 需要用到QByteArray类 因为char 最后都有一个 0 作为结束符 而采用QString toLatin1 时会在字符串后面加上 0 方法如下 int main
  • Hive聚合运算

    Hive聚合运算 Hive聚合运算 GROUP BY HAVING 基础聚合 高级聚合 Hive聚合运算 GROUP BY group by用于分组 Hive基本内置聚合函数与group by一起使用 如果没有指定group by子句 则默
  • P4047 [JSOI2010]部落划分

    题目链接 这道题一看最小值最大 很容易被误导进二分答案的思路 但实际上并不需要二分答案 其实正解是最小生成树 我们先预处理出原图的最小生成树 因为要分k个部落 所以我们先把最小的n k边先全部选走 因为我们用kruskal的话要用到并查集