1487:【例 2】北极通讯网络

2023-05-16

1487:【例 2】北极通讯网络

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 701 通过数: 321
【题目描述】
原题来自:Waterloo University 2002

北极的某区域共有 n 座村庄,每座村庄的坐标用一对整数 (x,y) 表示。为了加强联系,决定在村庄之间建立通讯网络。通讯工具可以是无线电收发机,也可以是卫星设备。所有的村庄都可以拥有一部无线电收发机, 且所有的无线电收发机型号相同。但卫星设备数量有限,只能给一部分村庄配备卫星设备。

不同型号的无线电收发机有一个不同的参数 d,两座村庄之间的距离如果不超过 d 就可以用该型号的无线电收发机直接通讯,d 值越大的型号价格越贵。拥有卫星设备的两座村庄无论相距多远都可以直接通讯。

现在有 k 台卫星设备,请你编一个程序,计算出应该如何分配这 k 台卫星设备,才能使所拥有的无线电收发机的 d 值最小,并保证每两座村庄之间都可以直接或间接地通讯。

例如,对于下面三座村庄:

其中 |AB|=10,|BC|=20,|AC|=105–√≈22.36
如果没有任何卫星设备或只有 1 台卫星设备 (k=0 或 k=1),则满足条件的最小的 d=20,因为 A 和 B,B 和 C 可以用无线电直接通讯;而 A 和 C 可以用 B 中转实现间接通讯 (即消息从 A 传到 B,再从 B 传到 C);

如果有 2 台卫星设备 (k=2),则可以把这两台设备分别分配给 B 和 C ,这样最小的 d 可取 10,因为 A 和 B 之间可以用无线电直接通讯;B 和 C 之间可以用卫星直接通讯;A 和 C 可以用 B 中转实现间接通讯。

如果有 3 台卫星设备,则 A,B,C 两两之间都可以直接用卫星通讯,最小的 d 可取 0。

【输入】
第一行为由空格隔开的两个整数 n,k;

第 2∼n+1 行,每行两个整数,第 i 行的 xi,yi​ 表示第 i 座村庄的坐标 (xi,yi)。

【输出】
一个实数,表示最小的 d 值,结果保留 2 位小数。

【输入样例】
3 2
10 10
10 0
30 0
【输出样例】
10.00
【提示】
数据范围:

对于全部数据,1≤n≤500,0≤x,y≤104,0≤k≤100。

思路:贪心,相当于最小生成树减去最大的k-1条边

#include <bits/stdc++.h>

using namespace std;
int n,k,fa[505],num=0;
struct edge
{
    int u,v;
    double w;
    bool operator<(const edge &x)const
    {
        return w<x.w;
    }
}a[505*505];
double x[505],y[505],res[505];

int Find(int x)
{
    if(fa[x]!=x)
        fa[x]=Find(fa[x]);
    return fa[x];
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> k;
    for(int i=1;i<=n;i++)
    {
        cin >> x[i] >> y[i];
        fa[i]=i;
    }
    if(k>=n)
    {
        printf("0.00\n");
        return 0;
    }
    for(int i=1;i<n;i++)
        for(int j=i+1;j<=n;j++)
            a[num].u=i,a[num].v=j,a[num++].w=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
    sort(a,a+num);
    int cnt=0;
    for(int i=0;i<num;i++)
    {
        int xx=Find(a[i].u),yy=Find(a[i].v);
        if(xx!=yy)
            fa[xx]=yy,res[cnt++]=a[i].w;
        if(cnt==n-1)
            break;
    }
    //贪心
    if(k==0)
        k=1;
    printf("%.2f\n",res[cnt-k]);
    return 0;
}

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

1487:【例 2】北极通讯网络 的相关文章

  • docker常用命令

    打包镜像 docker build span class token operator span t demo v1 span class token punctuation span 运行镜像 docker run span class
  • docker镜像加载原理

    docker的镜像实际上是由一层一层的文件系统组成 xff0c 这种层级的文件系统叫做UnionFS bootfs boot file system 主要包含bootloade和kernel xff0c bootloader主要是引导加载k
  • docker网络

    docker network常见的四种模式 桥接模式 bridge xff1a 为每一个容器分配 设置ip等 xff0c 并将容器连接到一个叫做docker0的虚拟网桥 xff0c docker网络默认为该模式 xff0c 使用 netwo
  • 玩客云刷armbian更新源报错The repository ‘http://apt.armbian.com stretch Release‘ does not have a Release file

    玩客云刷armbian系统更新源报错的解决方法 xff08 E The repository 39 http apt armbian com stretch Release 39 does not have a Release file x
  • GPT-4工具是软件工程师工作效率的倍增器

    1 xff0c 你现在正在哪个领域学习或工作呢 xff1f 你用过哪些AI智能工具 xff1f 主要从事AI算法数据集处理 xff0c 模型部署工具开发 xff0c 以及低代码工具开发 使用 Github的 Copilot 编程伴侣超过1个
  • HDFS Java API操作(IDEA版)

    目标 通过Java API来操作HDFS xff0c 完成的操作有 xff1a 文件上传 文件下载 新建文件夹 查看文件 删除文件 前提条件 1 Windows下安装好jdk1 8 2 Windows下安装好maven xff0c 这里使用
  • Ubuntu20.04 安装 CUDA10.1 和 CUDNN7.6.5

    说明 xff1a 本人的实验环境为 xff1a ubuntu20 04 xff0c 显卡 xff1a GTX1060 xff0c 已安装Nvidia驱动 查看你的NVIDIA显卡驱动是否支持cuda10 1版本 查看显卡驱动命令 xff1a
  • C++ 20 新特性 ranges 精讲

    C 43 43 20 新特性 ranges 精讲 C 43 43 20 中的 ranges 库使得使用 STL 更加舒适和强大 ranges 库中的算法是惰性的 xff0c 可以直接在容器上工作 xff0c 并且可以很容易地组合 简而言之
  • C语言学习篇(概念题)

    关键字static的作用是什么 1 xff09 在模块内 xff08 在函数内 xff09 xff0c 则此静态变量只能在该函数内使用 超出范围不能使用 但是它还占用内存 还存在 2 xff09 在模块内 xff08 但在函数体外 xff0
  • DMA控制器

    DMA控制器 DMA 简介 直接存储器访问 DMA 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传 输 可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据 这样节省的 CPU 资源可 供其它操作使用 DMA 控制器基
  • STM32 软硬件调试

    调试IO口占用 JTMS SWDIO PA13 JTCK SWCLK PA14 JTDI PA15 JTDO PB3 JNTRST PB4 STM32 软硬件调试 硬件调试 硬件调试通常是通过JTAT或者SWD调试下载器来进行调试 首先需要
  • Linux 音频驱动

    Linux 音频驱动 硬件介绍 WM8960与IMX6ULL之间有两个通信接口 xff1a I2C和I2S 其中I2C用于配置WM8960 I2S用于音频数据传输 修改设备树文件 编写I2C子节点设备树 codec span class t
  • RK3399android源码编译ninja: build stopped: subcommand failed报错原因

    ninja build stopped subcommand failed 编译RK3399 android源码的时候报错 xff1a ninja build stopped subcommand failed 发现网上很多解决方法都不行
  • android7.1固定usb转串口设备节点名称

    使能ch340驱动 修改源码路径下mklinux sh添加make menuconfig图形配置一下 使能ch340驱动 配置环境变量 单独编译内核文件 打包镜像烧写文件 ubuntu固定USB串口设备端口号 参考链接 xff1a http
  • RK3568-GPIO

    参考链接 https wenku baidu com view 3313c154f142336c1eb91a37f111f18583d00c33 html 接口号 GPIOn xy n 32 x 1 8 y 其中对应关系 A 1 B 2 C
  • Python使用Cython实例,速度提升150倍以上

    文章目录 1 什么是 Cython xff1f 2 用 Cython 编写1个函数1 xff09 安装 cython2 xff09 先编写1个纯python函数3 xff09 使用cython重写该函数4 编译 pyx 文件 3 运行cyt
  • RK3568-显示

    RK3568 显示 分辨率 720p xff1a 1280x720 1080p xff1a 1920x1080 2K xff1a 2560x1440 4K xff1a 3840x2160 接口 需要修改设备树 MIPI xff1a LCD
  • RK3568-SPI

    RK3568 SPI SPI xff08 serial peripheral interface xff09 支持以下特性 默认采用摩托罗拉 SPI 协议 支持 8 位和 16 位 软件可编程时钟频率和传输速率高达 50MHz 支持 SPI
  • Linux-固定USB转串口名称

    参考链接 https www cnblogs com WCH SoftGroup p 16516383 html udev简介 udev 是一个用户空间系统 xff0c 它使操作系统管理员能够为事件注册用户空间处理程序 udev 守护程序接
  • gstreamer

    gst discoverer 1 0 xff1a 查看媒体文件的编码 xff0c 帧率等信息 gst inspect 1 0 xff1a 找出可用的GStreamer元素及其功能 gst launch 1 0 xff1a 从命令行构建和运行

随机推荐

  • usb相关

    USB CDC类 Communication Device Class USB的CDC类是USB通信设备类 Communication Device Class 的简称 CDC类是USB组织定义的一类专门给各种通信设备 电信通信设备和中速网
  • 视频编解码

    色彩格式 参考链接 xff1a https blog csdn net luanfenlian0992 article details 124992465 rgb yuv 编码格式 参考链接 xff1a https blog csdn ne
  • kali linux 安装Docker

    kali linux 安装docker zhaomeng 64 kali sudo apt get install docker docker compose 启动docker service docker start 报错如下 zhaom
  • Ubuntu20.04修改环境变量失误导致开机循环——解决方法以及如何保存profile

    gedit etc profile配置Ubuntu环境变量时出现失误导致开机时输入密码后重复开机无法进入图画界面 解决方法 xff1a ctrl 43 alt 43 F1 F6 xff0c 我的是ctrl 43 alt 43 F2进入界面
  • Ubuntu中代理设置

    当我们没有梯子的时候 xff0c 我们不需要任何代理 xff0c 直接在网络配置中选择禁止或者自动 xff0c 火狐浏览器也选择自动就好 xff0c 当我们使用梯子以后 xff0c 我们得看梯子的代理端口 xff0c 让电脑代理选择手动 x
  • CentOS8 图形界面和命令行切换

    1 查看目前默认的启动默认 systemctl get default 命令行模式 multi user target 图形界面模式 graphical target 2 设置为图形界面模式 systemctl set default gr
  • Java实现微信(主、子商户模式)及支付宝支付

    一 业务需求 实现APP微信 支付宝支付 xff0c 后端需要做生成预支付单 xff0c 响应支付结果 xff1b 微信商户采用子商户模式 二 参考官方文档 微信普通商户 xff1a https pay weixin qq com wiki
  • Java判断整数是否为回文数

    回文数 xff0c 是指一个数的正序 xff08 从左到右 xff09 与其倒序 xff08 从右到左 xff09 相等的数 核心思想是把这个整数倒过来 xff0c 再与这个数进行比较 xff0c 若相等 xff0c 则此数为回文数 xff
  • geoserver集群部署

    geoserver集群部署 环境准备系统准备软件准备插件准备配置jdk安装tomcat部署geoserver安装mqgeoserver配置jms修改tomcat 启动文件新建broker xml放入cluster文件内容如下 三个节点均要新
  • Mathtype闪退、未嵌入office系统问题解决方法

    由于操作系统的设置和之前安装过的东西的不同 xff0c 每个人在安装mathtype时遇到的问题可能也不同 xff0c 本篇文章解决了mathtype的闪退 没有自动嵌入office的问题 安装过后出现的问题 xff1a 一 安装破解版后打
  • 在树莓派上搭建MQTT服务器

    一 MQTT协议 实现MQTT协议需要客户端和服务器端通讯完成 xff0c 在通讯过程中 xff0c MQTT协议中有三种身份 xff1a 发布者 xff08 Publish xff09 代理 xff08 Broker xff09 xff0
  • 树莓派和arduino的串口通信

    一 树莓派环境安装 1 安装GPIO模块 wget https span class token punctuation span span class token operator span sourceforge span class
  • Wifi模块ESP8266-01的初始化和编程环境的搭建

    ESP8266 01引脚图 xff1a Vcc接的是3 3V xff01 一 烧写AT固件 使用烧录工具插进电脑 xff0c 打开固件烧写程序 xff0c 烧入厂家提供的固件 测试 xff1a 打开串口助手XCOM xff0c 插拔TTL转
  • 阿里云平台+NodeMCU(arduino编程)实现MQTT收发【二】烧录NodeMCU

    这里首先要设置好阿里云平台 xff0c 参见上一篇文章 代码可以从这里下载 1 添加esp8266板子 文件 首选项 附加开发板管理器网址 xff0c 输入 xff1a http arduino esp8266 com stable pac
  • 阿里云平台+NodeMCU(arduino编程)实现MQTT收发【三】利用阿里云进行可视化开发

    应用开发 aliyun com 新建 输入应用名称 如果没有项目就新建一个项目 然后就是像PPT一样制作网页 xff0c 其中数据源配置需要关联产品和设备 xff0c 如下图所示 制作好之后发布即可 xff0c 如果不绑定自己的域名则需要登
  • windows10 iis自带的ftp 在使用filezilla的时候提示 550

    windows10 iis自带的ftp 在使用filezilla的时候提示 550 检查防火墙检查IIS的授权规则设置 检查防火墙 检查防火墙对FTP的支持 点击左侧允许应用和功能通过防火墙 在FTP服务器右侧打勾 检查IIS的授权规则设置
  • 【linux】debian安装apache2并创建虚拟站点

    前言 教程将会讲解如何在debian系统上安装apache2并且在80端口部署多个网站 环境准备 1 本次使用的服务器为debian10 2 睿智头脑和一双手 教程步骤 1 更新apt 这里我就不放设置更新源头的了 xff0c 网上一搜一大
  • Springboot整合富文本编辑器wangEditor(上传文件到七牛云)

    背景 最近项目上要用到富文本编辑器 xff0c 开始想用Ueditor 发现需要配置的东西比较多 xff0c 折腾了好久没弄好 xff0c 后来发现wangEditor比较好整合 xff0c 又轻又好用 xff0c 能满足大多需求 xff0
  • Debian10 设置允许root登录

    root登录 因为Bebian默认不允许 root登录 xff0c 修改文件配置 修改gmd3的登录文件 编辑文件 span class token function nano span etc gdm3 daemon conf 修改内容
  • 1487:【例 2】北极通讯网络

    1487 xff1a 例 2 北极通讯网络 时间限制 1000 ms 内存限制 65536 KB 提交数 701 通过数 321 题目描述 原题来自 xff1a Waterloo University 2002 北极的某区域共有 n 座村庄