HJ125 最大最小路 📅 发布时间:2026/7/6 23:03:04 👁️ 浏览次数: 知识点并查集校招时部分企业笔试将禁止编程题跳出页面为提前适应练习时请使用在线自测而非本地IDE。描述对于给定的无向无根树第 ii 个节点上有一个权值 wiwi 。我们定义一条简单路径是好的当且仅当路径上的点的点权最小值小于等于 aa 路径上的点的点权最大值大于等于 bb 。保证给定的 abab 你需要计算有多少条简单路径是好的。输入描述第一行输入三个整数 n,a,b(1≤n≤5×105,1≤ab≤109)n,a,b(1≤n≤5×105,1≤ab≤109) 代表节点数、给定的上下限。第二行输入 nn 个整数 w1,w2,…,wn(1≤wi≤109)w1,w2,…,wn(1≤wi≤109) 代表每个节点的权值。此后 n−1n−1 行每行输入两个整数 u,v(1≤u,v≤n,u≠v)u,v(1≤u,v≤n,uv) 代表一条无向边连接树上 uu 和 vv 两个节点。输出描述在一行上输出一个整数代表好路径的条数。示例1输入5 2 3 5 4 3 3 1 1 2 1 3 3 4 3 5复制输出4复制说明对于这个样例如下图所示。路径 2→1→3→52→1→3→5 是好的因为路径点权最小值 1≦a1≦a 且点权最大值 5≧b5≧b 。除此之外以下路径也是好的 ∙ ∙1→3→51→3→5 ∙ ∙3→53→5 ∙ ∙4→3→54→3→5 。#include iostream #include vector #include functional using namespace std; using ll long long; class UnionFind { public: vectorint parent; vectorint size; UnionFind(int n) : parent(n 1), size(n 1, 1) { for (int i 0; i n; i) parent[i] i; } int find(int u) { while (parent[u] ! u) { parent[u] parent[parent[u]]; // 路径压缩 u parent[u]; } return u; } void unite(int u, int v) { int ru find(u), rv find(v); if (ru rv) return; if (size[ru] size[rv]) swap(ru, rv); parent[rv] ru; size[ru] size[rv]; } }; ll countGoodPaths(int n, const vectorvectorint tree, const vectorint values, int a, int b) { // 预处理所有可能的边防止重复处理 vectorpairint, int edges; for (int u 1; u n; u) { for (int v : tree[u]) { if (u v) edges.emplace_back(u, v); } } auto calculate [](const functionbool(int) cond) - ll { UnionFind uf(n); vectorbool valid(n 1); for (int i 1; i n; i) valid[i] cond(i); // 合并符合条件的边 for (auto [u, v] : edges) { if (valid[u] valid[v]) uf.unite(u, v); } // 统计连通块大小 vectorint cnt(n 1, 0); for (int i 1; i n; i) { if (valid[i]) cnt[uf.find(i)]; } // 计算总路径数 ll sum 0; for (int c : cnt) { if (c 2) sum (ll)c * (c - 1) / 2; } return sum; }; const ll total (ll)n * (n - 1) / 2; const ll max_less_b calculate([](int x) { return values[x] b; }); const ll min_greater_a calculate([](int x) { return values[x] a; }); const ll both calculate([](int x) { return values[x] a values[x] b; }); return total - max_less_b - min_greater_a both; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, a, b; cin n a b; vectorint values(n 1); // values[1..n] for (int i 1; i n; i) cin values[i]; vectorvectorint tree(n 1); for (int i 0; i n - 1; i) { int u, v; cin u v; tree[u].push_back(v); tree[v].push_back(u); } cout countGoodPaths(n, tree, values, a, b) endl; return 0; }
ESP-WROOM-02D与02U模组选型、射频匹配与低功耗工程实践 ESP-WROOM-02D 与 ESP-WROOM-02U 模组深度技术解析:从选型、硬件设计到低功耗工程实践1. 产品定位与核心差异:不只是天线接口的升级ESP-WROOM-02D 和 ESP-WROOM-02U 是乐鑫基于 ESP8266EX SoC 推出的成熟贴片式 Wi-Fi 模组,虽已标注为“不推荐… 2026/7/5 14:49:47
【QT】QTreeWidget控件实战:构建高效文件管理系统 1. 为什么你需要一个文件管理系统?从QTreeWidget开始 如果你正在用Qt开发桌面应用,尤其是那些需要管理本地文件、组织项目结构或者展示层级数据的程序,那么你大概率会遇到一个绕不开的需求:如何清晰、高效地展示和管理这些有层次关… 2026/7/5 9:21:13
Alibaba DASD-4B Thinking 对话工具 LSTM 与 Transformer 对话模型对比浅析 Alibaba DASD-4B Thinking 对话工具 LSTM 与 Transformer 对话模型对比浅析 最近在和朋友聊起对话AI时,他问了个挺有意思的问题:“现在都说Transformer厉害,那以前用的LSTM是不是就完全不行了?” 这个问题让我想起了之前上手体验… 2026/7/2 23:20:16
WTAPI框架:私域自动化的10个核心接口实战解析 兄弟们,今天老哥不整虚的,直接上干货。你们做私域的都懂,每天加班到半夜,盯着微信群回消息、手动加好友、手动发朋友圈,结果一问流水,老板嫌你效率低。70%的时间花在重复劳动上,这不就是在给系统… 2026/7/7 2:22:09
AI圈“说理人“爱桑·加布里埃尔:在DeepMind干了9年,他到底在担心啥? 在全球人工智能产业狂飙突进的当下,有这么一个人,他的工作不是写代码、调参数,而是每天在办公室里"讲道理"——他就是爱桑加布里埃尔,谷歌DeepMind公司首位专职哲学家。 加布里埃尔2017年入职DeepMind,至今… 2026/7/7 2:22:09
大专生学AI有用吗?学历之外,更要多一项能被看见的能力 很多大专生都会有一个核心焦虑:学历弱势的情况下,学AI是不是就能逆袭、顺利就业?首先我们要直面现实、摆正认知:AI不能替代学历,也无法直接打包解决就业问题。它不是逆袭的捷径,更不是兜底的神器࿰… 2026/7/7 2:22:09
基于纯视觉算法的厘米级实景动态重构底层架构剖析 无源感知,全域孪生副标题:基于纯视觉算法的厘米级实景动态重构底层架构剖析前言当前数字孪生行业普遍存在两大底层桎梏:一是精准定位高度依赖UWB基站、RFID电子标签、激光雷达、北斗GPS等有源外设,设备布线、硬件采购、日常运维成… 2026/7/7 2:20:08
【Vibe Coding】安装环境 “ 目录:Vibe Coding -> 1 安装环境 ”一、HBuilder X支持VUE、uni-app小程序开发下载地址:https://www.dcloud.io/hbuilderx.html解压后,剪切到需要的目录,直接双击HBuilderX.exe运行即可点击左下角登录账号二、微信开发者工具… 2026/7/7 2:18:08
Java毕业设计-基于 SpringBoot 的家政服务管理系统的设计与实现 基于 SpringBoot+Vue 的居家家政服务管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am… 2026/7/7 2:18:08
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践 1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8… 2026/7/7 0:01:11
如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是… 2026/7/7 0:03:13
Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 【免费下载链接】Jailhouse-gui A graphical user interface (GUI) tool for configuring and managing Jailhouse, a Linux-based hypervisor for partitioning multicore processors into isolated cel… 2026/7/7 0:03:13
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/6 8:43:22
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/6 7:29:49
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/6 7:29:51