ACM-大一训练第三周(Floyd算法+并查集算法专题训练)
🚀write in front🚀
📝个人主页:认真写博客的夏目浅石.CSDN
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏:ACM周训练题目合集.CSDN
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊
✉️为什么我们不知疲倦,因为我们都在做自己所热爱的事 ♐
文章目录
- A - 电车
- B - 并查集
- C - 最短路
- D - 修复公路
- E - 青蛙
- F - 炸铁路
- G - DZY热爱化学
- H - 合根植物
- 总结

A - 电车
洛谷:P1346 电车

解题思路:Floyd算法的运用,这里大致讲解一下题目,从第二行开始就是第一个车道 接着就是开关思想,也就是01思想,这里对于电路,或者种树是否这些题目都是一个经验,对于这个题目后面也会对Floyd算法做一个总结
#include<iostream>
#include<cmath>
#include<cstring>using namespace std;#define N 0x3f3f3f3f //一个特别大的数字,记住这个知识点
int n,a,b,m,x,f[1001][1001];int main()
{memset(f,N,sizeof f);//初始化cin>>n>>a>>b;for(int i=1;i<=n;i++)//初始化---自己到自己是0{f[i][i]=0;}for(int i=1;i<=n;i++)//n条道路所以 for循环0-n{cin>>m;//组的变向与不变向for(int j=1;j<=m;j++){cin>>x;if(j==1){f[i][x]=0;//第一个必须设置为0,表示不变向}else {f[i][x]=1;//表示变向的情况}}}//标准的Floyd算法模板for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i!=j || i!=k || j!=k){f[i][j]=min(f[i][k]+f[k][j],f[i][j]);}}}}//输出if(f[a][b]==N) cout<<"-1"<<endl;else cout<<f[a][b]<<endl;return 0;
}
B - 并查集
AcWing—836. 合并集合

解题思路:并查集的模板题目,这里不多赘述。
#include<iostream>using namespace std;const int N=100010;int p[N];
int n,m;int find(int x) //目的:找到父节点 并且返回+路径压缩
{if(p[x]!=x) p[x]=find(p[x]);return p[x];
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) p[i]=i; //开始只有自己一个元素一个集合while(m--){char op[2];int a,b;scanf("%s%d%d",&op,&a,&b);if(op[0]=='M') p[find(a)]=find(b);else{if(find(a) == find(b)) puts("Yes");else puts("No");}}return 0;
}
C - 最短路

题目来自计蒜客,不过我不知道在哪里找到这个题目,大家下去自己去试一试
解题思路:基础Floyd算法,这个更加模板
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;int n,m;
int u,v,w;
int g[110][110];
int path[110][110];
const int maxx=99999999;
int main()
{cin>>n>>m;again:for(int i=1;i<=n;i++)//初始化{for(int j=1;j<=n;j++){if(i==j) g[i][j]=0;else g[i][j]=maxx;}}for(int i=1;i<=m;i++)//链接道路{cin>>u>>v>>w;g[u][v]=g[v][u]=w;}for(int k=1;k<=n;k++)//Floyd算法模板{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(g[i][j]>g[i][k]+g[k][j]){g[i][j]=g[i][k]+g[k][j];}}}}printf("%d\n",g[1][n]);//根据题意打印答案cin>>n>>m;if(n==0&&m==0) return 0;else goto again;return 0;
}
D - 修复公路
洛谷:P1111 修复公路

解题思路:并查集思路,不过运用到了结构体的基础知识,模板基础上加一些东西罢了。
#include<iostream>
#include<algorithm>using namespace std;struct node
{int x,y,t;
}a[100010];int n,m,p[100010];int cmp(node a,node b)//按照t进行排序
{return a.t<b.t;
}int find(int x)//并查集算法模板
{return p[x]==x?x:(p[x]=find(p[x]));
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;i++)scanf("%d %d %d",&a[i].x,&a[i].y,&a[i].t);sort(a+1,a+m+1,cmp);for(int i=1;i<=n;i++) p[i]=i;for(int i=1;i<=m;i++){int px=find(a[i].x);int py=find(a[i].y);if(px!=py) p[px]=py,n--;if(n==1) {cout<<a[i].t;return 0;}}cout<<"-1"<<endl;return 0;
}
E - 青蛙

#include<iostream>
#include<cmath>
#include<cstring>using namespace std;#define inf 0x3f3f3f3fint x[300],y[300],n;
double g[300][300];int main()
{int q=1;while(cin>>n&&n){memset(g,inf,sizeof(g));for(int i=1;i<=n;i++){cin>>x[i]>>y[i];}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){g[i][j]=g[j][i]=sqrt(double(x[i]-x[j])*(x[i]-x[j])+double(y[i]-y[j])*(y[i]-y[j]));}}for(int k=1; k<=n; k++)for(int i=1; i<=n; i++)for(int j=1; j<=n; j++)g[i][j]=min(g[i][j],max(g[i][k],g[k][j]));printf("Scenario #%d\nFrog Distance = %.3lf\n\n",q++,g[1][2]);}
}
F - 炸铁路
P1656 炸铁路

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>using namespace std;#define inf ox3f3f3f3f
int n,m,f[151],b[151];
struct City
{int a,b;
}p[5010];int find(int x)
{if(f[x]==x) return x;else return f[x]=find(f[x]);
}bool cmp(City x,City y)
{if(x.a==y.a) return x.b<y.b;return x.a<y.a;
}void he(int x,int y)
{int x1=find(x),y1=find(y);f[y1]=f[x1];
}int main()
{cin>>n>>m;for(int i=1;i<=m;i++){cin>>p[i].a>>p[i].b;if(p[i].a>p[i].b){int t=p[i].a;p[i].a=p[i].b;p[i].b=t;}}sort(p+1,p+m+1,cmp);for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){f[j]=j;}for(int j=1;j<=m;j++){if(j!=i){he(p[j].a,p[j].b);}}for(int j=2;j<=n;j++){if(f[find(j)]!=f[find(j-1)]){cout<<p[i].a<<" "<<p[i].b<<endl;break;}}}return 0;
}
G - DZY热爱化学
题目来自cf,具体我这里不链接了。

解题思路:并查集思路,模板基础上加一些东西罢了。
#include<iostream>
#include<cmath>using namespace std;typedef long long ll;
const int N=100010;
int p[N];
int n,m;int find(int x)
{return p[x]==x?x:(p[x]=find(p[x]));
}int main()
{cin>>n>>m;for(int i=1;i<=n;i++) p[i]=i;if(m==0){printf("1");return 0;}while(m--){int a,b;cin>>a>>b;a=find(a);b=find(b);if(a!=b){p[a]=b;}}ll ans=0,cnt=0;for(int i=1;i<=n;i++){if(find(i)!=i){++ans;}}ll c=pow(2,ans);printf("%lld\n",c);return 0;
}
H - 合根植物
P8654 [蓝桥杯 2017 国 C] 合根植物

解题思路:并查集思路,模板基础上加一些东西罢了。
#include<iostream>
#include<cmath>using namespace std;int n,m,k;
int p[100000010];int find(int x)
{return p[x]==x?x:(p[x]=find(p[x]));
}int main()
{cin>>n>>m>>k;int res=n*m;for(int i=1;i<=res;i++) p[i]=i;int ans=0;while(k--){int a,b;cin>>a>>b;a=find(a);b=find(b);if(a!=b){p[a]=b;}}for(int i=1;i<=res-1;i++){if(find(i)!=find(i+1)){ans++;p[find(i)]=find(i+1);}}cout<<ans+1<<endl;return 0;
}
总结
并查集:
做题思路:你会发现,你只需要输入操作+合并也就是find函数
再进行for循环遍历一遍就可以得到答案,不信你可以看看我写
的那些题目的共同特点真的非常相似,或许因为初学的缘故真的会发现
非常简单,因为就是这样用的
Floyd算法:
初始化+三层for循环+输出基本就是这个算法的模板,但是最困难的是建图的过程,这个需要特别训练
相关文章:
ACM-大一训练第三周(Floyd算法+并查集算法专题训练)
🚀write in front🚀 📝个人主页:认真写博客的夏目浅石.CSDN 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:ACM周训练题目合集.CSDN 💬总结:…...
taobao.item.sku.update( 更新SKU信息 )
¥开放平台免费API必须用户授权 *更新一个sku的数据 *需要更新的sku通过属性properties进行匹配查找 *商品的数量和价格必须大于等于0 *sku记录会更新到指定的num_iid对应的商品中 *num_iid对应的商品必须属于当前的会话用户 公共参数 请求地址: HTTP地址 http://gw.…...
ros2创建一个工程
第一步:创建src目录 $ mkdir ros2-demo $ cd ros2-demo/ $ mkdir src $ cd src/第二步:创建功能包cd src$ ros2 pkg create --build-type ament_cmake ros2_demo --dependencies rclcpp std_msgsros2 pkg create --build-type ament_python learning_pkg…...
【力扣】stack容器的探索之有效的括号
作者:狮子也疯狂 专栏:《算法详解》 愿你生如夏花之绚烂,幸运永远与你相伴,疯狂常在。 目录一. 🦁 Stack容器的来历1.1 操作栈的方法二. 🦁 Stack的使用2.1 题目2.2 分析2.3 详细算法实现2.4 力扣AC截图三…...
【Elsevier出版社】中科院2区,SCIEEI 双检,已有发表案例,3个月左右录用
1区智能传感器类SCIE&EI 【期刊简介】IF:5.0-6.0,JCR1区,中科院2区,SCI&EI 双检,正刊 【参考周期】3个月左右录用 【截稿日期】2023.5.30 【征稿领域】有关人工智能与传感器的相关研究均可 包括但不限于&#…...
基于明道云平台重建医院管理流程
一、龙华区医疗信息化建设情况 首先,给大家介绍一下龙华区医疗信息化建设的情况,龙华区位于深圳市的中部,目前下属3家公立医院,2家公共卫生机构。2017年,龙华区提出了建设智慧龙华总体框架方案,龙华区卫生…...
【蓝桥杯嵌入式】STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系
🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…...
ChatGPT API 低价上线,开发者可以人手一个了?
千呼万唤,ChatGPT API来了! 不仅首发,价格居然还有惊喜,0.002美元/每1000 token,并将价格降低90%,直接打了1折。OpenAI官方还表示,gpt-3.5-turbo目前的版本代号是gpt-3.5-turbo-0301࿰…...
品牌营销策略 | 科学经营合作伙伴关系的5个要素
在管理众多的合作伙伴项目时,企业会遇到很多的问题,比如,数据信息分散凌乱、手动操作繁琐重复和处理环节粗放等。这将耗费公司大量的人力物力,严重影响大数据的综合分析和利用。因此,企业要科学管理好企业的合作伙伴关…...
【剑指offer-C++】JZ20:表示数值的字符串
【剑指offer-C】JZ20:表示数值的字符串题目描述解题思路题目描述 描述:请实现一个函数用来判断字符串str是否表示数值(包括科学计数法的数字,小数和整数)。 科学计数法的数字(按顺序)可以分成以下几个部分…...
【NLP相关】深度学习领域不同编程IDE对比
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...
定制ubuntu的docker镜像
ssh登录jdkmavenvimpingcurlFROM ubuntu:22.04RUN apt-get updateRUN apt-get install -y \vim \inetutils-ping \openssh-server \curl \openjdk-8-jdk \mavenRUN mkdir /var/run/sshdRUN echo root:root |chpasswdRUN sed -ri s/^#?PermitRootLogin\s.*/PermitRootLogin yes…...
我的 System Verilog 学习记录(8)
引言 本文简单介绍 SystemVerilog 的接口。 前文链接: 我的 System Verilog 学习记录(1) 我的 System Verilog 学习记录(2) 我的 System Verilog 学习记录(3) 我的 System Verilog 学习记…...
详解JAVA字节码
目录 1.概述 2.字节码文件构成 2.1.魔数 2.2.版本号 2.3.常量池 2.4.访问标志 2.5.索引 2.6.字段表 2.7.方法表 3.字节码指令 3.1.概述 3.2.指令分类 3.2.1.加载存储指令 3.2.2.运算指令 3.2.3.其他指令 3.3.完整指令工作流程 4.字节码保护 1.概述 以往的编程…...
前端利用emailjs发送邮件
最近有一个需求,前端发送一个form表单到一个邮箱,找了一圈发现emailjs还不错就使用他了。首先emailjs官网注册一个账号注册完之后创建一个邮件服务(我这里使用的是谷歌邮箱)链接谷歌邮箱账户 然后创建服务接下来就要创建一个邮件的…...
16 Nacos服务端服务注册源码分析
Nacos服务端服务注册源码分析 服务端调用接口 我们已经知道客户端在注册服务的时候实际上是调用的NamingService.registerInstance这个方法来完成实例的注册,而且在最后我们也告诉了大家实际上从本质上讲服务注册就是调用的对应接口nacos/v1/ns/instanceÿ…...
Spring Boot2中如何优雅地个性化定制Jackson
概述 本文的编写初衷,是想了解一下Spring Boot2中,具体是怎么序列化和反序列化JSR 310日期时间体系的,Spring MVC应用场景有如下两个: 使用RequestBody来获取JSON参数并封装成实体对象;使用ResponseBody来把返回给前…...
2023年全国最新食品安全管理员精选真题及答案11
百分百题库提供食品安全管理员考试试题、食品安全员考试预测题、食品安全管理员考试真题、食品安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 101.婴幼儿配方乳粉的产品配方应当经()部门注册。…...
【脚本】用于得到某个文件/文件夹所有文件的存储大小(MB单位)
知识点 来自在线转换换算网页:在线文件大小(bit,bytes,KB,MB,GB,TB)转换换算 电脑中存储常用的单位: 1Byte(Byte 字节) 8Bit 1KB (Kilobyte 千字节) 1024Byte 1MB (Megabyte,兆字节,简称“兆”) 1024KB 1GB (Gigabyte&am…...
19- CNN进行Fashion-MNIST分类 (tensorflow系列) (项目十九)
项目要点 Fashion-MNIST总共有十个类别的图像。代码运行位置 CPU: cputf.config.set_visible_devices(tf.config.list_physical_devices("CPU"))fashion_mnist keras.datasets.fashion_mnist # fashion_mnist 数据导入训练数据和测试数据拆分: x_valid, x_train…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
基于Uniapp的HarmonyOS 5.0体育应用开发攻略
一、技术架构设计 1.混合开发框架选型 (1)使用Uniapp 3.8版本支持ArkTS编译 (2)通过uni-harmony插件调用原生能力 (3)分层架构设计: graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...
分布式计算框架学习笔记
一、🌐 为什么需要分布式计算框架? 资源受限:单台机器 CPU/GPU 内存有限。 任务复杂:模型训练、数据处理、仿真并发等任务耗时严重。 并行优化:通过任务拆分和并行执行提升效率。 可扩展部署:适配从本地…...
