【蓝桥杯 2024 省 Python B】缴纳过路费


蓝桥杯专栏:2024 省 Python B
算法竞赛:图论,生成树,并查集,组合计数,kruskal 最小生成树,乘法原理
题目链接:洛谷 【蓝桥杯 2024 省 Python B】缴纳过路费

题目描述:
在繁华的商业王国中,NNN 座城市被 MMM 条商路巧妙地连接在一起,形成了一个错综复杂的无向图网络。每条商路是双向通行的,并且任意两座城市之间最多只有一条直接的商路。每条商路都有它的规则,其中最引人注目的就是穿过
商路,需要缴纳过路费。因此,商人们在选择商路时必须格外认真。
有一位名叫小蓝的商人,他对于商路的花费有着自己独到的见解。在小蓝眼中,一条路线包含一条或多条商路,但路线的成本并不是沿途累积的过路费总和,而是这条路线上最贵的那一次收费。这个标准简单而直接,让他能迅速评估出一条路线是否划算。
于是,他设立了一个目标,即找出所有城市对,这些城市之间的最低路线成本介于他心中预设的两个数 LLLRRR 之间。他相信,这样的路线既不会太廉价,以至于路况糟糕;也不会过于昂贵,伤害他精打细算的荷包。
作为小蓝的助手,请你帮助小蓝统计出所有满足条件的城市对数量。

输入格式:
输入的第一行包含四个整数 N,M,L,RN, M, L, RN,M,L,R,表示有 NNN 座城市和 MMM 条双向通行的商路,以及小蓝心中预设的最高过路费的下限 LLL 和上限 RRR
接下来 MMM 行,每行包含三个整数 u,v,wu, v,wu,v,w,表示城市 uuu 和城市 vvv 之间有一条双向通行的商路,过路费为 www。保证每对城市之间最多只有一条直接的商路。
输出格式:
输出一行包含一个整数,表示满足条件的城市对数量。

数据范围:
对于 30% 的评测用例,1≤N≤103,1≤M≤min⁡(2×103,N×(N−1)2),1≤L≤R≤105,1≤u,v≤N,u≠v,1≤w≤1051 \le N \le 10^3,1 \le M \le \min(2 \times 10^3,\frac{N×(N−1)}{2}), 1 \le L \le R \le 10^5,1 \le u, v \le N, u \ne v,1 \le w \le 10^51N103,1Mmin(2×103,2N×(N1)),1LR1051u,vN,u=v,1w105
对于所有评测用例,1≤N≤105,1≤M≤min⁡(2×105,N×(N−1)2),1≤L≤R≤109,1≤u,v≤N,u≠v,1≤w≤1091 \le N \le 10^5,1 \le M \le \min(2 \times 10^5,\frac{N×(N−1)}{2}),1 \le L \le R \le 10^9,1 \le u, v \le N, u \ne v,1 \le w \le 10^91N105,1Mmin(2×105,2N×(N1)),1LR109,1u,vN,u=v1w109


【蓝桥杯】缴纳过路费

算法知识

  1. 并查集
  2. kruskal 最小生成树
  3. 乘法原理

题目大意

给出 nnn 个结点和 mmm 条带权边,一个结点代表一座城市,一条边表示两座城市间的直接路径(题目保证不会出现重边),并定义一条路线的成本为组成这条路线的边中的最大边权。给出 l,rl,rl,r 并定义符合要求的城市对满足这两个城市之间路径成本最小的路径的成本要在区间 [l,r][l,r][l,r] 之间,求出在所有城市中符合要求的城市对的个数。

题目不能保证图是连通的。

解题方法

fif_ifi–查并集数组,disidis_idisi–能够到达结点 iii 且最小成本路径的成本小于或等于当前边的边权的结点个数,ansansans–最终答案。

find(x)find(x)find(x) 函数为查并集中查找集合头元素的函数。

  1. 存边并按边权从小到大排序。
  2. 数组初始化,fi=i,disi=1f_i=i,dis_i=1fi=i,disi=1
  3. 按最小生成树模版遍历每一条边,结点为 u,vu,vu,v,计算 x=find(u),y=find(v)x=find(u),y=find(v)x=find(u),y=find(v),如果 x≠yx\ne yx=y 将结点 xxx 并到结点 yyy 上,再如果该边的边权属于 [l,r][l,r][l,r],那么更新 ans=ans+disx×disyans=ans+dis_x\times dis_yans=ans+disx×disy,不论 ansansans 是否更新,最后更新 disy=disy+disxdis_y=dis_y+dis_xdisy=disy+disx

AC Code

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10,M = 2e5+10;
int f[N],dis[N],ans;//f[]--查并集数组,dis[]--能够到达该结点且最小成本路径的成本小于当前边的边权的结点个数,ans--最终答案
struct node
{int x,y,z;bool operator<(const node &w)const{return z<w.z;//按边权排序(重载运算符)}
} G[M];
int find(int x)//查并集函数
{if (x==f[x]) return x;return f[x]=find(f[x]);
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);//关闭输入输出同步int n,m,l,r;cin>>n>>m>>l>>r;for (int i=0; i<m; i++){int x,y,z;cin>>x>>y>>z;G[i]= {x,y,z};//存边}sort(G,G+m);//排序(按边权排序--从小到大)for (int i=1; i<=n; i++) f[i]=i,dis[i]=1;//数组初始化for (int i=0; i<m; i++)//最小生成树模版{int x=G[i].x,y=G[i].y,z=G[i].z;int d=find(x),e=find(y);if (d!=e)//要这条边{f[d]=e;//并到结点 e 上if (z>=l&&z<=r)ans+=dis[d]*dis[e];//计算以该边的边权为最小成本路径的路径成本的满足要求的城市对dis[e]+=dis[d];//加到结点 e 上}}cout<<ans;//输出答案return 0;
}

End

感谢观看,如有问题欢迎指出。

更新日志

  1. 2025/8/30 开始书写本篇 CSDN 博客,并完稿发布。

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

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

相关文章

个性化导航新体验:cpolar让Dashy支持语音控制

文章目录简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问用 cpolar 让 Dashy 管理个人导航站就是这么简单&#xff01;三步轻松搞定&#xff1a;在电脑上安装 Dashy&#xff0c;拖拽添加常用网站&#xff0c;运行 cpolar 生成远程访问链接。这个方法不仅免费&…

SQL学习记录

基本的&#xff0c;增、删&#xff0c;改insert into table_name (列1, 列2,...) VALUES (值1, 值2,....)Delete from 表 where keyvalueupdate 表 set keyvalue,keyvalue where keyvalue查用的最多whereSELECT prod_name, prod_price FROM Products WHERE vend idDLLO1OR ve…

零基础学C++,函数篇~

C基础学习&#xff08;DAY_06&#xff09;函数1. 函数的定义与使用2. 函数参数传递3. 变量的声明周期4. 函数的其他特性5. 函数的嵌套与递归函数 1. 函数的定义与使用 ​ 在设计程序时&#xff0c;如果一段代码重复进行某种操作或者完成一个特定的功能&#xff0c;就应该将这…

react+vite+ts 组件模板

1.创建项目npm create vitelatest my-app --template react-ts2.配置项目 tsconfig.json{"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"lib": ["ES2020", "DOM", "D…

C语言 - 输出参数详解:从简单示例到 alloc_chrdev_region

C语言中的输出参数详解&#xff1a;以 alloc_chrdev_region 为例 在学习 C 语言函数调用时&#xff0c;我们常常接触到“输入参数”&#xff0c;比如把一个数字传给函数&#xff0c;让函数帮我们算出结果。但有时候可能会发现&#xff0c;有些函数除了返回值之外&#xff0c;还…

机器视觉学习-day09-图像矫正

1 仿射变换与透视变换1.1 仿射变换之前在图像旋转实验中已经接触过仿射变换&#xff0c;仿射变换是一个二维坐标系到另一个二维坐标系的过程&#xff0c;在仿射变换中符合直线的平直性和平行性。1.2 透视变换透视变换是把一个图像投影到一个新的视平面的过程。在现实世界中&…

杰理ac791获取之前版本sdk

很惭愧&#xff0c;一个如此简单的问题卡了这么久&#xff0c;运动战的本质就是多找线索&#xff0c;多尝试

基于轴重转移补偿和多轴协调的粘着控制方法研究

基于轴重转移补偿和多轴协调的粘着控制方法研究 1. 论文标题 基于轴重转移补偿和多轴协调的粘着控制方法研究 2. 内容概括 该论文针对重载电力机车在复杂轨面条件下易发生空转的问题,提出了一种新型粘着控制方法。传统方法仅考虑单轴粘着利用而忽略轴间关系,本文设计了包…

台达 PLC 软件导入 EDS 文件后不能通过 PDO 控制的解决方法

一、功能及注意事项 1.功能说明&#xff1a;通过修改 EDS 文件处理台达 PLC 软件导入 EDS 文件后不能通过 PDO 控制的解决方法 2.注意事项&#xff1a;1).此文档只针对立迈胜 CANopen 通讯一体化电机&#xff1b; 2).EDS 文件可以用记事本打开&#xff1b; 二、EDS 文件修改 IS…

Python库2——Matplotlib2

上一篇文章主要介绍了Matplotlib库中的Pyplot模块中几大常见图像的绘制&#xff0c;包括自行修改图像的属性&#xff0c;在绘制图像时会自动创建一个图形窗口来展现这些图像。本节内容继续讲讲这个&#xff08;Figure&#xff09;图像窗口即其一些常见用法。 其他python库链接…

AI生成思维导图和AI生成Excel公式

AI生成思维导图和AI生成Excel公式 AI 生成思维导图和 AI 生成 Excel 公式是一个完全免费的 AI 办公合集网站。 它完全免费&#xff0c;一个网站支持多个实用 AI 办公功能&#xff0c;包括&#xff1a;免费 AI Excel 公式生成器、输入 Excel 公式解释含义、AI Excel 助手、Exc…

java中的VO、DAO、BO、PO、DO、DTO

VO、DAO、BO 等对象在了解这里 po、vo、dao、之前先介绍下 MVC 开发模式M层负责与数据库打交道&#xff1b;C层负责业务逻辑的编写&#xff1b;V层负责给用户展示&#xff08;针对于前后端不分离的项目&#xff0c;不分离项目那种编写模版的方式&#xff0c;理解V的概念更直观&…

More Effective C++ 条款16:牢记80-20准则(Remember the 80-20 Rule)

More Effective C 条款16&#xff1a;牢记80-20准则&#xff08;Remember the 80-20 Rule&#xff09;核心思想&#xff1a;软件性能优化遵循帕累托原则&#xff08;Pareto Principle&#xff09;&#xff0c;即大约80%的性能提升来自于优化20%的关键代码。识别并专注于这些关键…

Java中对泛型的理解

一、泛型是什么&#xff1f;1. 定义&#xff1a; 泛型允许你在定义类、接口或方法时使用类型参数&#xff08;Type Parameter&#xff09;。在使用时&#xff08;如声明变量、创建实例时&#xff09;&#xff0c;再用具体的类型实参&#xff08;Type Argument&#xff09; 替换…

Redis开发06:使用stackexchange.redis库结合WebAPI对redis进行增删改查

一、接口写法namespace WebApplication1.Controllers.Redis {[ApiController][Route("/api/[controller]")]public class RedisService : IRedisService{private readonly IConnectionMultiplexer _redis;//StackExchange.Redis库自带接口public RedisService(IConne…

【前端教程】从零开始学JavaScript交互:7个经典事件处理案例解析

在网页开发中&#xff0c;交互性是提升用户体验的关键。JavaScript作为网页交互的核心语言&#xff0c;通过事件处理机制让静态页面"动"了起来。本文将通过7个经典案例&#xff0c;从简单到复杂&#xff0c;逐步讲解JavaScript事件处理的实现方法和应用场景。 案例1&…

内存模型(Memory Model)是什么?

内存模型(Memory Model)是什么? 内存模型是一个非常深刻且核心的计算机科学概念。 核心摘要 内存模型是一个契约或协议,它精确定义了: 一个线程对共享内存的写操作,如何以及何时对其他线程可见。 内存操作(读/写)可以被重新排序的程度。 它连接了硬件(CPU如何执行指令…

在 MyBatis 中oracle基本数值类型的 JDBC 类型映射

基本数值类型的 JDBC 类型Java 类型JDBC 类型 (jdbcType)说明int / IntegerINTEGER标准整数类型long / LongBIGINT大整数类型short / ShortSMALLINT小整数类型float / FloatFLOAT单精度浮点数double / DoubleDOUBLE双精度浮点数java.math.BigDecimalDECIMAL高精度小数&#xff…

Spring注解演进与自动装配原理深度解析:从历史发展到自定义Starter实践

目录 Spring注解发展史 Spring 1.X Spring 2.X Spring 2.5之前 Required Repository Aspect Spring2.5 之后 Spring 3.x ComponentScan Import 静态导入 ImportSelector ImportBeanDefinitionRegistrar EnableXXX Spring 4.x Spring 5.x 什么是SPI 自动装配…

第三届机械工程与先进制造智能化技术研讨会(MEAMIT2025)

【重要信息】 大会官网&#xff1a;https://www.yanfajia.com/action/p/BYE27DYDhttps://www.yanfajia.com/action/p/BYE27DYD 会议地点&#xff1a;哈尔滨理工大学 论文检索&#xff1a;EI Compendex、Scopus 还有部份版面&#xff0c;欲投稿从速&#xff0c;即将提交出版…