蓝桥杯真题 - 缴纳过路费 - 题解

news/2025/2/23 13:12:54

题目链接:https://www.lanqiao.cn/problems/19736/learning/

个人评价:难度 2 星(满星:5)
前置知识:并查集


整体思路

  • 按边权从小到大处理,将处理过的边的两个端点合入一个并查集中;
  • 由此,在处理到第 i i i 条边时,如果边的两个端点不在并查集中,那么这两个端点各自在的并查集中所有端点,都必须经过这条边才能到达对面的端点,所以该边两端所有点之间的“最贵”收费就是这条边的权值,因此如果该边权值在区间 [ L , R ] [L, R] [L,R] 内,那么这条边对答案的贡献就是两边并查集节点数的乘积。

过题代码

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int maxn = 200000 + 100;
struct Edge {
    int u, v, w;
    Edge() {}
    Edge(int u, int v, int w): u(u), v(v), w(w) {}
};

bool operator<(const Edge &a, const Edge &b) {
    return a.w < b.w;
}

int n, m, l, r, u, v, w;
LL ans;
int fa[maxn], num[maxn];
Edge edge[maxn];

void init() {
    for (int i = 1; i <= n; ++i) {
        fa[i] = i;
        num[i] = 1;
    }
}

int findF(int x) {
    return x == fa[x] ? x : fa[x] = findF(fa[x]);
}

void union_(int x, int y) {
    x = findF(x);
    y = findF(y);
    if (x != y) {
        fa[x] = y;
        num[y] += num[x];
    }
}

int main() {
#ifdef ExRoc
    freopen("test.txt", "r", stdin);
#endif // ExRoc
    ios::sync_with_stdio(false);

    cin >> n >> m >> l >> r;
    init();
    for (int i = 1; i <= m; ++i) {
        cin >> edge[i].u >> edge[i].v >> edge[i].w;
    }
    sort(edge + 1, edge + 1 + m);
    for (int i = 1; i <= m; ++i) {
        u = findF(edge[i].u);
        v = findF(edge[i].v);
        w = edge[i].w;
        if (w >= l && w <= r && u != v) {
            ans += num[u] * num[v];
        }
        union_(u, v);
    }
    cout << ans << endl;

    return 0;
}

http://www.niftyadmin.cn/n/5863427.html

相关文章

深入解析设计模式之单例模式

深入解析设计模式之单例模式 在软件开发的复杂世界里&#xff0c;设计模式是开发者手中的得力工具&#xff0c;它们是对常见问题的总结和通用解决方案。单例模式作为其中一种基础且常用的设计模式&#xff0c;在各类应用中扮演着重要角色。 一、单例模式的定义与概念 单例模…

CNewMenu::QueryContextMenu函数分析之新建菜单项的创建

CNewMenu::QueryContextMenu函数分析之新建菜单项的创建 第一部分&#xff1a; HRESULT CNewMenu::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) { // if they want the default menu only (CMF_DEFAULTONLY) OR //…

靶场之路-Kioptix Level-1 mod_ssl 缓冲区溢出漏洞

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章笔记的只是方便各位师傅学习知识,以下网站涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一、准备工作 首先使用 vmware 导入靶机文件&#xff0c; 然后网络模式改成 nat 模式即可 我们打…

Open WebUI选择模型为空,解决办法(for DeepSeek)

标签&#xff1a; DeepSeek&#xff1b; Open WebUI&#xff1b; 问题&#xff1a;Open WebUI选择模型为空&#xff0c;解决办法 &#xff08;for DeepSeek&#xff09; 操作系统&#xff1a;Ubuntu 22 硬件&#xff1a;台式电脑 Ubuntu 22系统&#xff0c;DeepSeek安装成功&…

使用 WebGL 和 React Three Fiber 实现的粒子流体流动特效

在Web 开发中粒子系统广泛应用于各种动画效果和数据可视化场景。本文将介绍如何使用 WebGL 和 React Three Fiber 实现一个高效的 GPU 粒子系统。通过利用 GPU 的并行计算能力,我们可以在不牺牲性能的情况下实现复杂的粒子动画。 粒子动画 1,项目结构 项目的目录结构: in…

C# 中DevExpress的GridView中Appearance 属性

在 C# 中使用 DevExpress 的 GridView 时&#xff0c;Appearance 属性通常用于全局设置样式&#xff08;如所有行的背景颜色&#xff09;。如果需要对指定行设置样式&#xff0c;不能直接通过 Appearance 实现&#xff0c;而是需要使用事件&#xff08;如 RowStyle&#xff09;…

商汤绝影发布全新端到端自动驾驶技术路线R-UniAD

以“模塑全球 无限可能”为主题的2025GDC全球开发者先锋大会于2月21日-2月23日在上海徐汇举办&#xff0c;旨在探索大模型产业化解决方案&#xff0c;推进场景落地应用&#xff0c;实现商业模式的正向闭环。 在2月22日的商汤大模型生产力论坛上&#xff0c;商汤绝影CEO&#x…

QARepVGG--含demo实现

文章目录 前言引入Demo实现总结 前言 在上一篇博文RepVGG中&#xff0c;介绍了RepVGG网络。RepVGG 作为一种高效的重参数化网络&#xff0c;通过训练时的多分支结构&#xff08;3x3卷积、1x1卷积、恒等映射&#xff09;和推理时的单分支合并&#xff0c;在精度与速度间取得了优…