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

【蓝桥杯】省赛:缴纳过路费(并查集)

在这里插入图片描述

思路

这题很有意思,路线以最贵的那一段收费w为标准,而只要w在区间[l,r]之间即可。
所以城市对之间必须至少有一段路价格不小于l,至于大于r(超费)的输入,直接不理他(不加入图)即可。
最后求的是城市对的数量,可以用并查集,把路段价格小于R满足的城市加入到集合A中,再把所有路段价格小于l的城市再存入另一个集合B,最后两两组合配对,从集合A中所有配对数量减去B中配对数量。所以额外需要记录根节点的size
p a i r = ( n − 1 ) + ( n − 2 ) + . . . + 1 = n ∗ ( n − 1 ) / / 2 pair = (n-1) + (n-2)+...+1=n*(n-1)//2 pair=(n1)+(n2)+...+1=n(n1)//2
最终
a n s = p a i r A − p a i r B ans = pairA-pairB ans=pairApairB

code

因为要创建两个并查集,这里把并查集封装成对象更好,但是不熟悉我就用参数a来区分两个集合了,稍微麻烦。

import os
import sys

def find(x,a):
  if a==1:
    if father1[x]==x:return x
    father1[x] = find(father1[x],a)
    return father1[x]
  if a==2:
    if father2[x]==x:return x
    father2[x] = find(father2[x],a)
    return father2[x]

def merge(x,y,a):
  if a==1:
    fx = find(x,a)
    fy = find(y,a)
    if fx != fy:
      father1[fy] = fx
      size1[fx] += size1[fy]
      size1[fy] = 1
  if a==2:
    fx = find(x,a)
    fy = find(y,a)
    if fx != fy:
      father2[fy] = fx
      size2[fx] += size2[fy]
      size2[fy] = 1

def cal(x):
  return x*(x-1)//2

n, m, L, R = map(int, input().split())
road = []

father1 = list(range(n+1))
size1 = [1 for i in range(n+1)]
father2 = list(range(n+1))
size2 = [1 for i in range(n+1)]
for i in range(m):
  u, v, w = map(int, input().split())
  if w <= R: merge(u,v,1)
  if w < L: merge(u,v,2)

ans = 0
for i in range(1,n+1):
  if i==find(i,1):
    ans += cal(size1[i])
  if i==find(i,2):
    ans -= cal(size2[i])
print(ans)

相关文章:

  • 虚拟定位 1.2.0.2 | 虚拟定位,上班打卡,校园跑步模拟
  • AI幻觉时代:避坑指南与技术反思
  • 机器学习扫盲系列(2)- 深入浅出“反向传播”-1
  • 粗粒度和细粒度指的是什么?
  • 回顾Transformer,并深入讲解替代方案Mamba原理(图解)
  • 【6. 系统调用】
  • 异常(11)
  • 解决QT_Debug 调试信息不输出问题
  • Navigation页面导航的使用
  • 无SIM卡时代即将来临?eSIM才是智联未来?
  • ChatBI 的技术演进与实践挑战:衡石科技如何通过 DeepSeek 实现商业落地
  • arthas基础命令
  • Forward Looking Radar Imaging by Truncated Singular Value Decomposition 论文阅读
  • K8S快速部署
  • CSP-J/S冲奖第18天:真题解析
  • Matlab 汽车主动悬架LQR控制器设计与仿真
  • 使用DeepSeek,优化斐波那契数函数,效果相当不错
  • 什么是有限元力学?分而治之,将复杂问题转化为可计算的数学模型
  • 设计模式-适配器模式
  • 【网页】自制流光卡片
  • 泽连斯基批准美乌矿产协议
  • 《AI×SCIENCE十大前沿观察》9:合成数据和数据基础设施
  • 外交部:中方期待印巴巩固和延续停火势头,避免冲突再起
  • 外交部发言人就印巴局势升级答记者问
  • 马上评丨规范隐藏式车门把手,重申安全高于酷炫
  • 央行谈MLF:逐步退出政策利率属性回归流动性投放工具