POJ 2349 Arctic Network

【代码超详解】POJ 2349 Arctic Network(Kruskal 算法) 一、题目描述 阅读详情

题目链接:

http://poj.org/problem?id=2349

解题思路:

最小生成树问题,但是理解起来,非常费解。。。

用prim算法求解:

先求出每两个顶点之间的距离,(注意:是double类型的),然后用普里姆算法(Prim)求最小生成树。由于无线电的数目已给出m,需要把最小生成树分成m份,即删除m-1条边,得到m个连通分量。关键是删除哪些边呢,题目要求最小的D,故把构成最小生成树的边从大到小排序,删除前m-1条边,第m条边即所要求的最小D。

用kruskal算法求解:

P个哨所最多用P-1条边即可连起来,而S颗卫星可以代替S-1条边,基于贪心思想,代替的边越长,求得的D就越小。所以可以用一个数组保存加入最小生成树的边的长度,共有P-1条边,把前S-1条较长的边代替掉,剩下的边中最长的即为所求,即dis[(P-1) - (S-1) - 1] = dis[P-S-1]。

只要思路清晰,就可以很容易把这道题A了。

注意事项:

用g++交,用%.2f输出

用C++交,用%.2lf输出

不然会wrong。。。

AC代码(prim):

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define INF 0xfffffff
using namespace std;

struct node{
    double x,y;
}no[505];
int s,p,ans;
double edge[505][505];
double dis[505];
double temp[505];
int vis[505];

double dist(double x1,double y1,double x2,double y2){
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}

bool cmp(double x,double y){
    return x > y;
}

void prim(int cur)
{
    int i, j, tmp;
    memset(vis, 0, sizeof(vis));
    for(i = 1; i <= p; i++)
        dis[i] = edge[cur][i];
    vis[cur] = 1;
    for(i = 2; i <= p; i++)
    {
        double Min = INF;
        for(j = 1; j <= p; j++)
        {
            if(!vis[j] && dis[j] < Min)
                Min = dis[tmp = j];
        }
        vis[tmp] = 1;
        temp[ans++] = Min;
        for(j = 1; j <= p; j++)
        {
            if(!vis[j] && dis[j] > edge[tmp][j])
                dis[j] = edge[tmp][j];
        }
    }
}

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&s,&p);
        for(int i = 1; i <= p; i++)
            scanf("%lf%lf",&no[i].x,&no[i].y);
        for(int i = 1; i <= p; i++){
            edge[i][i] = 0;
            for(int j = 1; j < i; j++){
                edge[i][j] = edge[j][i] = dist(no[i].x,no[i].y,no[j].x,no[j].y);
            }
        }
        ans = 0;
        prim(1);
        sort(temp,temp+ans,cmp);
        printf("%.2f\n",temp[s-1]);
    }
    return 0;
}


AC代码(kruskal):

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define INF 0xfffffff
using namespace std;

struct node{
    double x,y;
}no[550];
int s,p,m,ans;
double dis[505];
int pa[505];

double dist(double x1,double y1,double x2,double y2){
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}

struct Edge
{
    int u,v;
    double w;
}edge[1000005];

bool cmp(Edge a,Edge b)
{
    return a.w < b.w;
}

int findset(int x)
{
    if(pa[x] != x)
        pa[x] = findset(pa[x]);
    return pa[x];
}

void kruskal()
{
    int i,u,v,cnt = p;
    for(i = 0; i < m; i++)
    {
        u = findset(edge[i].u);
        v = findset(edge[i].v);
        if(u != v)
        {
            dis[ans++] = edge[i].w;
            pa[v] = u;
            if(--cnt == 1)
                break;
        }
    }
}

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&s,&p);
        for(int i = 1; i <= p; i++)
            scanf("%lf%lf",&no[i].x,&no[i].y);
        m = 0;
        for(int i = 1; i <= p; i++)
            pa[i] = i;
        for(int i = 1; i <= p; i++){
            for(int j = 1; j <= i; j++){
                double tmp = dist(no[i].x,no[i].y,no[j].x,no[j].y);
                edge[m].u = i;
                edge[m].v = j;
                edge[m++].w = tmp;
                edge[m].u = j;
                edge[m].v = i;
                edge[m++].w = tmp;
            }
        }
        sort(edge,edge+m,cmp);
        ans = 0;
        kruskal();
        printf("%.2f\n",dis[p-s-1]);
    }
    return 0;
}


Chapter2、HDR流水线 HDR内容的获取(不同曝光时间的图片合成) 相机响应函数 HDR视频 阅读详情

相关推荐

麒麟V10服务器多硬盘安装与分区实战:告别自动分区,手动分配/boot、swap和/根目录

本文详细介绍了麒麟V10服务器在多硬盘环境下的手动分区策略,包括/boot、swap和/根目录的优化分配方案。通过SSD与HDD混合存储架构的合理规划,提升系统性能和运维效率,适用于企业级定制化系统部署需求。

weixin_26976635的博客 406

Arctic Network北极网络(Prim算法&&Kruskal算法)

Arctic Network北极网络 目录 Arctic Network北极网络 题意描述 Kruskal算法解题思路 易错分析 Kruskal AC代码 Prim解题思路 易错分析 Prim AC代码 The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technolo

m0_58245389的博客 691

CVPR 2024 LaTeX 模板实战:从匿名提交到图表排版的避坑指南

本文详细解析CVPR 2024 LaTeX模板的使用技巧,涵盖匿名提交设置、pdfLaTeX编译器选择、图表排版优化等关键环节。通过实战案例演示智能引用、公式编号、三线表制作等专业技巧,帮助研究者高效完成论文格式规范,规避常见排版错误。特别针对双栏格式下的图片定位、跨栏表格等复杂场景提供解决方案。

weixin_42561040的博客 453

Arctic Network (最小生成树 Kruskal +贪心)

Arctic Network 题目描述: The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establishing the network: every outpost will have a radio transceive

Eagle222的博客 362

Claude Skills 深度讲解

阶段 1:Function Call(2023)├─ 大模型可以调用外部工具├─ 问题:缺乏对任务的深度理解└─ 局限:工具调用简单线性阶段 2:MCP 上下文工程(2024)├─ 大模型有了更丰富的上下文和工具├─ 问题:仍然需要手动编写复杂的 Prompt└─ 局限:每次对话都需要重新加载上下文阶段 3:Claude Skills(2025)├─ 大模型有了「能力模块」的概念├─ 可以动态加载、组合、执行专门的工作流├─ 真正实现了「知识的模块化和复用」

u013134676的博客 1464

【FPGA】AD9694调试注意事项

基于FPGA的AD9694设计及其注意事项,包括同步的设计注意事项

weixin_41246509的博客 2900

Arctic Network题解+(最小生成树二次理解 )

由于在上一篇文章用了大量的文字已经对于最小生成树的两种算法(克鲁斯卡尔和普利姆算法)做了基础的讲解,下面的话我就大概说一下思想和解题步骤,然后再在附加上一个昨天做题(虽然说很基础但是对于初学的我就有点……)的一个题解; 最小生成树第一次讲述的连接:https://blog.youkuaiyun.com/weixin_44606952/article/details/99301454 克鲁斯卡尔算法: 就是把各...

weixin_44606952的博客 468

【UE5】三步搞定Pixel Streaming:从零搭建Windows像素流服务

本文详细介绍了如何在Windows平台上快速搭建UE5 Pixel Streaming像素流服务,从插件安装、项目打包到服务启动的全流程操作。通过实战案例和优化配置,帮助开发者实现零客户端配置、跨设备兼容的高性能3D应用流式传输,特别适合建筑可视化和实时协作场景。

weixin_29000991的博客 318

Arctic Network

Arctic Network

Charlotte_1236的博客 314

【WB32库开发】第9章 TIM1高级定时器——输出多路PWM

PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 。在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音等。 WB32也可输出PWM,需配置WB32上的定时器。 在WB32中有4个定时器,其中TIM1为高级定时器,TIMx(2-4)为通用定时器,这四个定时器均挂载在APB1总线上,每个定时器都可以输出4路PWM。 本章需要使用固件库TIM例程

北海村夫的博客 4637

【数据分析】比较SparCC、Pearson和Spearman相关性估计方法在合成组学数据上的表现

【数据分析】比较SparCC、Pearson和Spearman相关性估计方法在合成组学数据上的表现

专注生信领域 659

2349 Arctic Network(中文版)

试题描述: 国防部希望通过无线网络连接几个北方前哨基地。 在建立网络时将使用两种不同的通信技术:每个前哨基站都将拥有无线电收发器,另外还有一些前哨卫星通道。 任何带卫星频道的两个前哨都可以通过卫星进行通信,无论其位置如何。 否则,只有两个前哨基站之间的距离不超过D,才能通过无线电通信,这取决于收发器的功 率。 更高的功率产生更高的D,但成本更高。 由于采购和维护的考虑,前...

dfssbqyrq96616258的博客 766

YOLOv8改进-利用图像去雾网络UnfogNet提升检测精度的探索【附核心模块代码】

YOLOv8-UnfogNet联合模型的提出为目标检测和图像去雾领域提供了一个新的思路。通过将图像去雾网络和目标检测网络结合,不仅可以提升在恶劣天气下的目标检测精度,还能够为实际应用中的自动驾驶、监控安防等领域带来更强的鲁棒性和适应性。随着去雾技术和目标检测算法的不断发展,我们相信,这种联合方法将在多个领域中获得更加广泛的应用,并为进一步提升图像质量和检测精度做出重要贡献。

一键难忘的博客 3202

[POJ 2349] Arctic Network

[题目链接] http://poj.org/problem?id=2349 [算法] 首先,我们发现答案是具有单调性的,所以我们可以二分答案 检验时,我们将所有距离小于二分值的点连边,然后判断联通块数量是否小于等于S即可 [代码] #include <algorithm> #inc...

181

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

poj2349 Arctic Network

题目链接:http://poj.org/problem?id=2349 题意:有s颗星球,有p个雷达站,如果雷达站在同一个星球上,不需要距离就可以直接通信,如果不在一个星球上,他们之间的距离不能超过D,现在给你p个雷达站的坐标,如果要把这整个雷达站连通,问你最小的D是多少 解析:首先要联通全部雷达站,肯定是最小生成树,然后让你求一个D值,雷达站之间连边,相当于如果距离大于D就不能相连,那么可以先

22h's Blog 433

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【POJ】[2349]Arctic Network

理解题意之后也并不算太难 大意是给了一些坐标来求最小生成树 然而让输出的是最大边的值,而因为还有卫星可供通讯 所以只需要当有P个点S个卫星时 共P-1条边里舍去S-1条大的边所以这里我感觉用Kruskal更好一些 而且当取了 P-1-(S-1)==P-S条边时,这一条边便是所要求边 不需要进行后续操作了

BoilTask Talk Show 531

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

POJ2349 Arctic Network

题目链接:http://poj.org/problem?id=2349 求最小生成树中第S大的边,结点给的是坐标(坑爹啊) #include #include #include #include #include #include using namespace std; #define N 500 struct edge { int u, v; double w;

浅雨歌 515

Arctic Network POJ - 2349

The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establishing the network: ev...

aocan6909的博客 142

poj 2349 Arctic Network

Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5764 Accepted: 2007 题目链接:http://poj.org/problem?id=2349 Description The Department

优快云515的专栏 1130

【POJ 2349 --- Arctic Network】prim || kruskal

【POJ 2349 --- Arctic Network】prim || kruskal 题目来源:点击进入【POJ 2349 — Arctic Network】 Description The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network...

来日浅谈的博客 542

poj 2349 Arctic Network

http://poj.org/problem?id=2349 Arctic Network Time Limit:2000MS Memory Limit:65536K Total Submissions:12544 Accepted:4097 Description The Department of Nation...

deyou1988的专栏 134

POJ-2349-Arctic Network

链接:https://vjudge.net/problem/POJ-2349#author=clzls 题意: 国防部(DND)要用无线网络连接北部几个哨所。两种不同的通信技术被用于建立网络:每一个哨所有一个无线电收发器,一些哨所将有一个卫星频道。 任何两个有卫星信道的哨所可以通过卫星进行通信,而不管他们的位置。同时,当两个哨所之间的距离不超过D时可以通过无线电通讯,D取决于对收发器的功率。...

weixin_33705053的博客 118

POJ - 2349 Arctic Network

The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establishing the net...

GxhZxx的博客 316
上一篇: hdu 1385 Minimum Transport Cost(最短路,floyd打印字典序路径)
下一篇: hdu 1671 Phone List && POJ 3630 Phone List(静态申请空间)
yphacker
博客等级 码龄12年 199粉丝 540原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值