【藍橋杯 2024 省 Python B】繳納過路費

【藍橋杯 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×(N?1)?),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×(N?1)?),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;即將提交出版…