当前位置: 首页 > news >正文

最小生成树模型

文章目录

    • 题单
      • 最小生成树模型
        • 1.[最短网络(prim)](https://www.acwing.com/problem/content/1142/)
        • 2. [局域网(kruskul)](https://www.acwing.com/problem/content/1143/)
        • 3. [繁忙的都市](https://www.acwing.com/problem/content/1144/)
        • 4. [ 联络员 ](https://www.acwing.com/problem/content/1145/)
        • 5. [连接格点 ](https://www.acwing.com/problem/content/1146/)

题单

最小生成树模型

1.最短网络(prim)

纯裸的一道prim模版题

和dijkstra区别:d数组记录的是一个点到生成树的最小距离

#include<bits/stdc++.h>using namespace std;
int n;
const int N=110,INF=0x3f3f3f3f;
int g[N][N],st[N],d[N];
int res;void prim(){memset(d,0x3f,sizeof d);d[1]=0;for(int i=1;i<=n;i++){int t=-1;for(int j=1;j<=n;j++){if(!st[j]&&(t==-1||d[t]>d[j])){t=j;}}res+=d[t];st[t]=1;for(int j=1;j<=n;j++) d[j]=min(d[j],g[t][j]);}
}signed main(){cin>>n;memset(g,0x3f,sizeof g);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>g[i][j];}}prim();cout<<res<<endl;return 0;
}
2. 局域网(kruskul)

纯裸的kruskul算法

#include<bits/stdc++.h>using namespace std;
int n,k;
const int N=110,M=210;
int fa[N];int find(int x){if(x!=fa[x]) return x=find(fa[x]);return fa[x];
}struct edges{int x,y,z;bool operator<(const edges& M)const{return z<M.z;}
}es[N];signed main(){cin>>n>>k;for(int i=1;i<=n;i++) fa[i]=i;for(int i=0;i<k;i++){int x,y,z;cin>>x>>y>>z;es[i]={x,y,z};}sort(es,es+k);int res=0;for(int i=0;i<k;i++){int a=find(es[i].x),b=find(es[i].y),c=es[i].z;if(a!=b){fa[a]=b;}else{res+=c;}}cout<<res<<endl;return 0;
}
3. 繁忙的都市

思考:

  • 题目大意就是要一个最长边最小的最小生成树
  • 根据kruskull本身就需要给边排序的特性,直接按序取直到形成一颗生成树
  • 这里的最小生成树和传统的权值之和最小的生成树不一样
#include<bits/stdc++.h>using namespace std;
int n,m;
const int N=310,M=8e3+10;
int fa[N];struct edge{int x,y,z;bool operator< (const edge& M)const{return z<M.z;}
}edges[M];int find(int x){if(x!=fa[x]) x=find(fa[x]);return fa[x];
}signed main(){cin>>n>>m;for(int i=1;i<=n;i++) fa[i]=i;for(int i=0;i<m;i++){int x,y,z;cin>>x>>y>>z;edges[i]={x,y,z};}sort(edges,edges+m);int res;for(int i=0;i<m;i++){int a=find(edges[i].x),b=find(edges[i].y),c=edges[i].z;if(a!=b){fa[a]=b;res=c;}}cout<<n-1<<' '<<res<<endl;return 0;
}
4. 联络员

第一眼:

  • 根据线路分类:可以选择的路 以及 必须存在的路
    • 也就是已知某些边的存在,找到剩下的边,使生成树权值最小(其实不确定还是不是求一颗生成树,但一定要满足每个点都能到,且选择的权值最小
    • 那就直接kruskal算法
//一遍ac
#include<bits/stdc++.h>using namespace std;
const int N=2e3+10,M=1e4+10;
int fa[N];
int n,m;struct edge{int p,x,y,z;bool operator<(const edge& M)const{if(p==M.p){return z<M.z;}return p>M.p;}
}edges[M];int find(int x){if(x!=fa[x]) return x=find(fa[x]);return fa[x];
}signed main(){cin>>n>>m;for(int i=1;i<=n;i++) fa[i]=i;int res=0;for(int i=0;i<m;i++){int p,x,y,z;cin>>p>>x>>y>>z;if(p==1){int a=find(x),b=find(y);fa[a]=b;res+=z;}edges[i]={p,x,y,z};}sort(edges,edges+m);for(int i=0;i<m;i++){int a=find(edges[i].x),b=find(edges[i].y),c=edges[i].z;if(a!=b){fa[a]=b;res+=c;}}cout<<res<<endl;return 0;
}
5. 连接格点

还是在已有连线的基础上找到权值之和最小生成树

处理点阵

  • (1)把二维压成一维
  • (2) 离散化
//第一版代码tle了#include<bits/stdc++.h>using namespace std;
int n,m;
const int N=1e3+10;
int fa[N*N],g[N][N];
int cnt=0;struct edge{int x,y,z;bool operator<(const edge& M)const{return z<M.z;}}edges[2*N*N];int find(int x){if(x!=fa[x]) x=find(fa[x]);return fa[x];
}signed main(){cin>>n>>m;for(int i=1;i<=n*m;i++) fa[i]=i;int x,y,xx,yy;int t=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){g[i][j]=++t;if(i+1<=n){edges[cnt++]={t,t+m,1};}if(j+1<=m)edges[cnt++]={t,t+1,2};}}while(cin>>x>>y>>xx>>yy){int a=find(g[x][y]),b=find(g[xx][yy]);if(a!=b){fa[a]=b;}}sort(edges,edges+cnt);int res=0;for(int i=0;i<cnt;i++){int a=find(edges[i].x),b=find(edges[i].y),c=edges[i].z;if(a!=b){fa[a]=b;res+=c;}}cout<<res<<endl;return 0;
}

边权为正才有最小生成树

小tips:

  • 先建纵向边再建横向边,可以省去一步排序过程。
#include<bits/stdc++.h>using namespace std;
int n,m;
const int N=1e3+10;
int fa[N*N],g[N][N];
int cnt;struct edge{int x,y,z;}edges[2*N*N];int find(int x){if(x!=fa[x]) fa[x]=find(fa[x]);//这一步是路径压缩return fa[x];
}void get_edges(){int dx[]={-1,0,1,0},dy[]={0,1,0,-1},dw[]={1,2,1,2};for(int z=0;z<2;z++){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int u=0;u<4;u++){if(u%2==z){int x=i+dx[u],y=j+dy[u],w=dw[u];if(x&&x<=n&&y&&y<=m){int a=g[i][j],b=g[x][y];if(a<b) edges[cnt++]={a,b,w};}}}}}}
}signed main(){cin>>n>>m;for(int i=1;i<=n*m;i++) fa[i]=i;int x,y,xx,yy;int t=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){g[i][j]=++t;}}while(cin>>x>>y>>xx>>yy){int a=find(g[x][y]),b=find(g[xx][yy]);//if(a!=b){//  fa[a]=b;//}fa[a]=b;}get_edges();int res=0;for(int i=0;i<cnt;i++){int a=find(edges[i].x),b=find(edges[i].y),c=edges[i].z;if(a!=b){fa[a]=b;res+=c;}}cout<<res<<endl;return 0;
}

相关文章:

最小生成树模型

文章目录 题单最小生成树模型1.[最短网络(prim)](https://www.acwing.com/problem/content/1142/)2. [局域网(kruskul)](https://www.acwing.com/problem/content/1143/)3. [繁忙的都市](https://www.acwing.com/problem/content/1144/)4. [ 联络员 ](https://www.acwing.com/p…...

基于盲信号处理的声音分离-基于改进的信息最大化的ICA算法

基于信息最大化的ICA算法的主要依据是使输入端与输出端的互信息达到最大&#xff0c;且输出各个分量之间的相关性最小化&#xff0c;即输出各个分量之间互信息量最小化&#xff0c;其算法的系统框图如图所示。 基于信息最大化的ICA算法的主要依据是使输入端与输出端的互信息达到…...

如何在Qt Designer中管理QSplitter

问题描述 当按下按钮时&#xff0c;我希望弹出一个对话框&#xff0c;用户可以在其中选择内容并最终按下 ‘Ok’ 按钮。我想在这个对话框中放置一个 QSplitter&#xff0c;左侧面板将显示树状结构&#xff0c;右侧将显示其他内容。如何正确实现这一点&#xff1f; 从 Qt 的示…...

关于新零售的一些思考

本文作为2024上半年大量输入之后的核心思考之一。工作到一定阶段之后&#xff0c;思考的重要性越来越高&#xff0c;后续会把自己的个人思考记录在这个新系列《施展爱思考》。背景是上半年面临业务转型从电商到新零售&#xff0c;本文是相关大量输入之后的思考&#xff0c;对新…...

C++初学者指南-2.输入和输出---从输入流错误中恢复

C初学者指南-2.输入和输出—从输入流错误中恢复 文章目录 C初学者指南-2.输入和输出---从输入流错误中恢复怎么了&#xff1f;解决方案&#xff1a;出错后重置输入流 怎么了&#xff1f; 示例&#xff1a;连续输入 int main () {cout << "i? ";int i 0;cin…...

毫秒级响应!清科优能应用 TDengine 建设虚拟电厂运营管理平台

小T导读&#xff1a;在清科优能的虚拟电厂运营管理平台建设中&#xff0c;项目初期预计涉及约一万台设备、总数据采集量达数十万&#xff0c;在数据库选择上&#xff0c;其希望能支持至少两千台设备的并发数据处理。本文介绍了清科优能的数据库选型经验以及最终应用效果&#x…...

【Ubuntu noble】apt 无法安装软件 Unable to locate package vim

宿主机以及 docker 无法定位软件包 将 /etc/apt/sources.list.d/ubuntu.sources 修改为以下内容&#xff08;主要是 Suites 字段增加了noble noble-updates&#xff09; Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Com…...

Instagram APIj接口——快速获取Ins帖子媒体内容下载链接

一、引言 在社交媒体蓬勃发展的今天&#xff0c;Instagram已成为用户分享照片、视频和精彩瞬间的首选平台。然而&#xff0c;对于很多用户来说&#xff0c;想要保存或分享Instagram上的精彩内容却常常遇到困扰。为了解决这个问题&#xff0c;我们精心打造了一款全新的Instagra…...

Java基础(四)——字符串、StringBuffer、StringBuilder、StringJoiner

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…...

吐血推荐!3款视频生成工具,全部国产,都免费

AI视频大模型的爆发&#xff0c;让创作爆款视频不再是专业人士的能力。 今天二师兄给大家推荐3款免费的视频生成工具。 01 可灵 推荐指数 &#xff1a; 五颗星 先看效果 可灵大模型测试 可灵大模型是快手AI团队自主研发的视频生成大模型&#xff0c;具备强大的视频创作能力&a…...

【Web3】Web3.js 启动!并解决Web3 is not a constructor报错

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 本节教大家如何启动Web3.js 目录 Web3 启动&#xff01; 于是很愉快的报错 创建实例&#xff01; 出来了 Web3&#xff1a;模块…...

算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码网106 岛屿的周长

卡码网110 字符串接龙 这题一开始用的邻接表dfs&#xff0c;不幸超时 #include <iostream> #include <list> #include <string> #include <vector> using namespace std;int minLen 501;bool count(string a, string b) {int num 0;for (int i 0; …...

搭建 MySQL MHA

搭建 MySQL MHA 搭建 MySQL MHA实验拓扑图实验环境实验思路MHA架构故障模拟 实验部署数据库安装主从复制部署时间同步主服务器配置从服务器配置创建链接 MHA搭建安装依赖的环境安装 node 组件安装 manager 组件配置无密码认证在 manager 节点上配置 MHA管理 mysql 节点服务器创…...

python中的线程与进程

一、线程与进程 在计算机科学中&#xff0c;理解线程和进程的区别是重要的基础知识。这些概念对于多任务操作和并发编程尤为关键。下面将详细介绍线程与进程的区别、特点和各自的使用场景。 1.1 进程&#xff08;Process&#xff09; 进程是操作系统分配资源的基本单位。每个进…...

网络安全筑基篇——反序列化漏洞

目录 序列化是什么&#xff1f; 反序列化又是什么&#xff1f; 反序列化漏洞的危害 代码样例 常见的魔术方法 修复方式有哪些&#xff1f; 常见的反序列化漏洞 Shiro反序列化漏洞 Fastjson反序列化漏洞 序列化是什么&#xff1f; 将实例化对象转换成字节流的过程 反序…...

帝国cms定时审核并更新的方法

比如你网站采集了成千上万篇文章&#xff0c;不可能一下子全部放出来的&#xff0c;所以为了模拟人工发布&#xff0c;那么就需要定时审核发布文章内容&#xff0c;本文内容核心解决了更加个性化的逼真模拟人工更新网站内容。 第一&#xff1a;首先要满足你的表中有未审核的数据…...

一个简单好用安全的开源交互审计系统,支持SSH,Telnet,Kubernetes协议

前言 在当今的企业网络环境中&#xff0c;远程访问和交互审计成为了保障网络安-全的重要组成部分。然而&#xff0c;现有的解-决方案往往存在一些痛点&#xff0c;如复杂的配置、有限的协议支持、以及审计功能的不足。这些问题不仅增加了IT管理员的负担&#xff0c;也为企业的…...

使用Spring Boot和WebSocket实现实时通信

使用Spring Boot和WebSocket实现实时通信 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在Spring Boot应用中使用WebSocket实现实时通信&am…...

【Vue】集成富文本编辑器

这文章使用的是wangeditor插件&#xff0c;官网地址&#xff1a;wangEditor&#xff0c;这个比较简单 安装 npm i wangeditor --save 使用 <div id"editor"></div>import E from "wangeditor"const editor new E("#editor") e…...

【论文阅读】--Popup-Plots: Warping Temporal Data Visualization

弹出图&#xff1a;扭曲时态数据可视化 摘要1 引言2 相关工作3 弹出图3.1 椭球模型3.1.1 水平轨迹3.1.2 垂直轨迹3.1.3 组合轨迹 3.2 视觉映射与交互 4 实施5 结果6 评估7 讨论8 结论和未来工作致谢参考文献 期刊: IEEE Trans. Vis. Comput. Graph.&#xff08;发表日期: 2019&…...

重建大师引擎数0,本地引擎设置改不了,空三在跑,这样是正常的吗?

答&#xff1a;任务目录和引擎监控目录并没有按照网络集群设置&#xff0c;需要调整为网络路径。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0c;输入倾斜照片&#xff0c;激光点云&#xff0c;POS信息及像控点&#xff0c;输出高精度彩色网…...

APM教程-SkyWalking安装和配置

SkyWalking简介 APM (Application Performance Management) 即应用性能管理&#xff0c;属于IT运维管理&#xff08;ITOM)范畴。主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化&#xff0c;提高企业IT应用的可靠性和质量&#xff0c;保证用户得到良好的服务&#…...

斯坦福大学 AI 研究部门推出的“7 周人工智能学习计划”

①AI Python 基础&#xff0c;包括计算机原理、语法、判断语句等&#xff1b; ②AI Python 进阶&#xff0c;涉及 Linux 命令、多任务编程等&#xff1b; ③机器学习&#xff0c;涵盖算法、数据结构等&#xff1b; ④计算机视觉与图像处理&#xff0c;包含图像分类、目标检测…...

World of Warcraft [CLASSIC] plugin lua

World of Warcraft [CLASSIC] plugin lua 魔兽世界lua脚本插件 World of Warcraft API - Wowpedia - Your wiki guide to the World of Warcraft D:\World of Warcraft\_classic_\Interface\AddOns zwf.lua function CountdownFunc()CountdownFrame CreateFrame("Fram…...

背靠广汽、小马智行,如祺出行打得过滴滴和百度吗?

©自象限原创 作者丨艾AA 编辑丨薛黎 北京时间6月14日凌晨&#xff0c;在特斯拉股东大会上&#xff0c;马斯克阐述了对Robotaxi&#xff08;自动驾驶出租车&#xff09;商业模式的构想——特斯拉不仅会运营自己的无人驾驶出租车车队&#xff0c;还可以让特斯拉车主们的爱…...

CCSP自考攻略+经验总结

备考攻略 备考攻略准备阶段通读阶段精度阶段总复习阶段刷题阶段命运审判 写到最后 备考攻略 趁着对ssp知识点的理解还在&#xff0c;开始ccsp的考证之路&#xff0c;文章结构还是按照cissp备考篇的结构梳理。本次备考和cissp的离职在家备考不同&#xff0c;ccsp是在职利用非工…...

面试突击:ArrayList源码详解

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。ArrayList 是我们日常开发中不可避免要使用到的一个类&#xff0c;并且在面试过程中也是一个非常高频的知识点&#…...

力扣每日一题:2734. 执行子串操作后的字典序最小字符串

题目链接 脑子比较笨&#xff0c;分三种情况考虑&#xff1a; 以a开头。xxa&#xff0c;a在中间。 对于情况2还有两种可能&#xff1a; 1. 全是a&#xff0c;最后一个元素需要替换成z&#xff0c;因为必须执行一次操作。 2. aaaxxa&#xff0c;中间有一段非a&#xff0c;将这…...

C++11中std::thread的使用

C11 引入了 std::thread&#xff0c;它是用于创建和管理线程的标准库类。以下是详细的讲解&#xff0c;包括如何使用 std::thread 进行线程创建、管理和参数传递等操作。 1. 包含必要的头文件 在使用 std::thread 前&#xff0c;需要包含 <thread> 头文件&#xff1a; …...

酷瓜云课堂(内网版)v1.1.5 发布,局域网在线学习+考试系统

更新内容 更新layui-v2.9.10更新docker国内镜像地址增加导入镜像构建容器的方式教师不批阅非首次考试试卷轮播图增加专栏类型目标链接增加课程能否发布检查去除初始化kindeditor语言文件去除选择题EF选项优化富文本内容显示样式优化内容图片点击放大监听优化试题题干答案等图片…...

做网站的规范/哈尔滨seo优化公司

文章目录相关文章相关工具蓝牙hid协议一、HID Reports :Input Reports,输入报告Output Reports,输出报告Feature Reports,特征报告二、HID channel三、HID Report ModesBluetooth HID ProtocolBoot protocol 和 report protocol 的区别&#xff1a;四、Bluetooth HID Protocol …...

上海企业网站推广方法/三只松鼠网络营销案例分析

1. 安装webstorm 2.安装nodejs http://nodejs.cn/download/ 查看安装的版本 3. cnpm https://npm.taobao.org/ cmd 里执行 npm install -g cnpm --registryhttps://registry.npm.taobao.org 下载老师的源码&#xff0c;解压 在D盘新建 D:\VueShop\ 把online-store 拷贝过来…...

深圳龙华汽车站附近有做网站建设的/免费网络推广网站

2019独角兽企业重金招聘Python工程师标准>>> 下载地址&#xff1a;http://code.google.com/p/freecms/ questionList 从FreeCMS 1.2 开始支持 根据参数提取网上调查对象列表。 参数 说明 id 网上调查id siteid 从FreeCMS 1.4开始支持 所属站…...

用html做女装网站/百度客服人工电话95188

Java 7之集合类型 - 二叉排序树、平衡树、红黑树 http://blog.csdn.net/mazhimazh/article/details/19961017Java并发教程 http://www.iteye.com/magazines/131...

wordpress ppt预览/兰州seo

1当启动类和controller在同类中时&#xff0c;在该类添加注解Controller即可 2当启动类和controller分开时&#xff0c;启动类要放在项目的根目录下&#xff0c;启动类中添加注解SpringBootApplication&#xff0c; 2当启动类和controller分开时&#xff0c;启动类要放在项目的…...

微博营销案例/seo网站自动推广

刚开始开发项目的时候&#xff0c;我一直都在用火狐&#xff0c;因为它有一个fireBug插件&#xff0c;特别好用(目前已不支持)&#xff0c;也不知道什么时候&#xff0c;就一直用起来Chrome浏览器了&#xff0c;可能是因为它有强大的插件作为后盾吧。开发了这么多年&#xff0c…...