[蓝桥杯练习]通电

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
kruskal做法(加边)

#include <bits/stdc++.h>
using namespace std;
int x[10005],y[10005],z[10005];//存储i点的x与y坐标 
int bcj[10005];//并查集 
struct Edge{//边 int v1,v2; double w;
}edge[2000005];
int cmp(Edge a, Edge b){return a.w < b.w;}
int find(int x){//并查集查找 if(bcj[x]!=x)bcj[x]=find(bcj[x]);//带路径压缩return bcj[x];
}
void merge(int v1,int v2){//并查集合并 v1=find(v1);v2=find(v2);bcj[v2]=v1;
}
int main(){//int n;cin>>n;for(int i=1;i<=n;++i)bcj[i]=i;//并查集初始化//for(int i=1;i<=n;i++)cin>>x[i]>>y[i]>>z[i];//读取结点x坐标y坐标 int cnt=0;for(int v1=1;v1<=n;++v1)for(int v2=v1+1;v2<=n;++v2){//求出任意两点的权重 double w=sqrt(pow((x[v1]-x[v2]),2)+pow((y[v1]-y[v2]),2))+pow((z[v1]-z[v2]),2);//v1的x坐标减去v2的x坐标... edge[++cnt]={v1,v2,w};}sort(edge+1,edge+cnt+1,cmp);int MSTm = 0;double sumw = 0.0;//解决了任意孤立点(一个点就是一个集合),然后对每个点作n-1个点的相连边并排序,保证每次取得是最短的,并且使用并查集避免出现环路. //取得边是离散的,总可以取完 for(int i=1;i<=cnt;++i){//依次取得边,其权重递增 if(find(edge[i].v1)!=find(edge[i].v2)){//若两边端点不属于同一个集合,则合并 merge(edge[i].v1,edge[i].v2);//每次取一条边并将其标记为一个集合,使其不出现环路 ++MSTm;sumprimzuofaw+=edge[i].w;//获取MST中最大的边 }if(MSTm==n-1)break;//n-1条边就可以构造MST }cout<<fixed<<setprecision(2)<<sumw<<endl;return 0;
}

prim做法(加点)

#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = 1005;
vector<int> demo;
double closest[MAXN], lowcost[MAXN];
int m, n;             // m为节点的个数,n为边的数量
double G[MAXN][MAXN]; // 邻接矩阵
double prim()
{for (int i = 0; i < m; i++){lowcost[i] = INF;}for (int i = 0; i < m; i++){closest[i] = 0;}closest[0] = -1;             // 加入第一个点,-1表示该点在集合U中,否则在集合V中int num = 0,  e = 0; // e为最新加入集合的点double ans=0;while (num < m - 1)          // 加入m-1条边{int miedge = -1;double micost = INF;for (int i = 0; i < m; i++)if (closest[i] != -1){double temp = G[e][i];if (temp < lowcost[i]){lowcost[i] = temp;closest[i] = e;}if (lowcost[i] < micost)micost = lowcost[miedge = i];}ans += micost;demo.push_back(micost);closest[e = miedge] = -1;num++;}return ans;
}struct node
{double x, y, h;
} dis[MAXN];double getDistance(node a, node b)
{return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2)) + pow(a.h - b.h, 2);
}int main()
{scanf("%d", &m);for (int i = 0; i < m; i++)scanf("%lf%lf%lf", &dis[i].x, &dis[i].y, &dis[i].h);for (int i = 0; i < m - 1; i++)for (int j = i + 1; j < m; j++){G[i][j] = getDistance(dis[i], dis[j]);G[j][i] = G[i][j];}printf("%.2lf", prim());// for (int i = 0; i < m - 1; i++)//     cout << demo[i] << " ";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

奇异值分解及MATLAB实现

svd分解基本改变 奇异值分解(Singular Value Decomposition,简称SVD)是线性代数中的一种重要技术,广泛应用于信号处理、统计学、语义分析、图像处理等多个领域。SVD不仅仅是一种数学工具,它提供了一种深入理解数据结构和解决问题的方法。接下来,我们将深入探讨SVD的概念…

.pth文件转化为onnx文件,并进行可视化

1、文件转化 import torch.onnx from torchvision import models from onnxsim import simplify import onnx torch_model torch.load("D:\checkpoint-epoch40.pth",map_locationcpu) # pytorch模型加载 model models.resnet50() # model.load_state_dict(torch_…

用C++编写“多功能双人五子棋”游戏

当用C编写一款五子棋游戏时&#xff0c;可以按照以下步骤进行&#xff1a; 创建一个棋盘&#xff1a;使用二维数组来表示棋盘&#xff0c;每个元素代表一个位置&#xff0c;可以使用数字或字符来表示空位、黑子和白子。 实现游戏规则&#xff1a;根据五子棋的规则&#xff0c;…

代码随想录算法训练营第二十八天(回溯4)|93. 复原 IP 地址、78. 子集、90. 子集 II(JAVA)

文章目录 93. 复原 IP 地址解题思路源码 78. 子集解题思路源码 90. 子集 II解题思路源码 93. 复原 IP 地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&…

什么是Redis数据一致性?如何解决?

在系统中缓存最常用的策略是&#xff1a;服务端需要同时维护DB和cache&#xff0c;并且是以DB的结果为准–Cache-Aside Pattern&#xff08;缓存分离模式、旁路缓存&#xff09; 读数据 单纯的读数据是不会产生数据不一致&#xff0c;只有并发下读和写才会存在数据不一致。 写…

python2.7+rf框架搭建

一 下载pycharm 可下载最新版&#xff1a;https://www.jetbrains.com/pycharm/download/#sectionwindows 新建项目时需要关联python2.7&#xff0c;这个必须要python2.7安装好之后关联才生效&#xff0c;若也关联了&#xff0c;但创建项目后有弹框显示类似“项目创建失败”的提…

人工智能常用的编程语言有哪些?

人工智能常用的编程语言包括Python、Java、C、R、Lisp和Prolog等。具体选择取决于项目需求、技术背景和性能要求。 Python是AI领域的明星语言&#xff0c;由于其简洁易懂的语法、丰富的库支持以及庞大的社区资源&#xff0c;适用于机器学习、深度学习和自然语言处理等领域。 …

千万级数据用什么数据结构判断某个数据是否存在?

面试题&#xff0c;如何在千万级的数据中判断一个值是否存在&#xff1f;-腾讯云开发者社区-腾讯云 (tencent.com) 使用布隆过滤器。 数组大小和hash函数数量如何确定&#xff1f; 通过公式可以得出&#xff08;与log2有关&#xff09; 使用什么hash函数&#xff1f; murm…

算法练习第四十二天|01背包问题、416. 分割等和子集

一些背包问题 01背包问题 题目描述 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等&#xff0c;它们各自…

nvme协议学习总结

一、nvme命令 1 nvme在pcie基础上的协议&#xff0c;与PCIE配合&#xff0c;实现高效传输。 2 nvme命令主要分IO命令和admin命令。 3 一个NVME CMD执行流程&#xff1a; step1&#xff1a;host把cmd写入SQ queue中&#xff1b; step2&#xff1a;host远端更新Device&#x…

如何优化Java程序的性能?

优化Java程序的性能是一个多方面的任务&#xff0c;它涉及到代码设计、算法选择、内存管理、并发处理等多个方面。以下是一些建议&#xff0c;帮助你优化Java程序的性能&#xff1a; 一、代码和算法优化 1、选择合适的数据结构和算法&#xff1a;确保你的代码使用了最有效的数…

C++从入门到精通——nullptr

nullptr 前言一、指针空值NULL二、指针空值nullptr(C11)C98中的指针空值 三、NULL与nullptr的区别总结 前言 nullptr是C11引入的一个新特性&#xff0c;用于表示空指针。它提供了一种类型安全的方式来区分空指针和非空指针&#xff0c;避免了传统空指针&#xff08;如NULL或0&…

BIT-5-动态内存管理(C语言进阶)

本章重点 为什么存在动态内存分配动态内存函数的介绍 mallocfreecallocrealloc常见的动态内存错误几个经典的笔试题柔性数组 1. 为什么存在动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟…

华为OD面试手撕算法-字符串压缩

题目描述 本题是leetcode原题&#xff1a;字符串压缩 字符串压缩。利用字符重复出现的次数&#xff0c;编写一种方法&#xff0c;实现基本的字符串压缩功能。比如&#xff0c;字符串"aabcccccaaa"会变为"a2b1c5a3"。若“压缩”后的字符串没有变短&#xf…

瑞吉外卖实战学习--12、分类管理的修改和删除接口实现

分类管理的修改和删除的接口实现 前言获取接口的方法修改接口的连接请求方式和参数删除接口的连接请求方式和参数 实现接口 前言 本篇实现分类的管理的修改和删除接口&#xff0c;在平时项目中最常用的就是增删改查接口&#xff0c;通过页面来的到请求的接口和方法然后通过创建…

在Java中对SQL进行常规操作的通用方法

SQL通用方法 一、常规方法增删改查二、具体优化步骤1.准备工作2.getcon()方法&#xff0c;获取数据库连接对象3.closeAll()方法&#xff0c;关闭所有资源4.通用的增删改方法5.通用的查询方法6.动态查询语句 总结 一、常规方法增删改查 在常规方法中&#xff0c;我们在Java中对…

建独立站,对FP商家有什么好处?

2024年都过去四分之一了&#xff0c;还有许多人对是否投身于跨境独立站领域仍犹豫不决。然而&#xff0c;观望不如实践&#xff0c;如果渴望在跨境电商领域开创一片新天地&#xff0c;那么现在就是行动的最佳时机。 特别是对于FP商家来说&#xff0c;由于电商平台对于黑五类产品…

数据挖掘|贝叶斯分类器及其Python实现

分类分析|贝叶斯分类器及其Python实现 0. 分类分析概述1. Logistics回归模型2. 贝叶斯分类器2.1 贝叶斯定理2.2 朴素贝叶斯分类器2.2.1 高斯朴素贝叶斯分类器2.2.2 多项式朴素贝叶斯分类器 2.3 朴素贝叶斯分类的主要优点2.4 朴素贝叶斯分类的主要缺点 3. 贝叶斯分类器在生产中的…

滑动窗口最大值_单调队列_java

滑动窗口最大值 leetcode链接 问题描述 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 提示&#xff1a; 1 < nums…

SD-WAN降低网络运维难度的三大关键技术

企业网络作为现代企业不可或缺的基础设施&#xff0c;承担着连接全球的重要任务。随着全球化和数字化转型的加速推进&#xff0c;企业面临着越来越多的网络挑战和压力。传统的网络组网方式已经不能满足企业规模扩大、分支机构增多、上云服务等需求&#xff0c;导致了网络性能下…