尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Kimi    LeetCode 3600. 升级后最大生成树稳定性 Python3实现
以下是 LeetCode 3600. 升级后最大生成树稳定性Maximize Spanning Tree Stability with Upgrades的 Python3 实现基于二分查找 并查集的解法。pythonfrom typing import Listclass UnionFind:def __init__(self, n):self.p list(range(n))self.size [1] * nself.cnt ndef find(self, x):if self.p[x] ! x:self.p[x] self.find(self.p[x])return self.p[x]def union(self, a, b):pa, pb self.find(a), self.find(b)if pa pb:return Falseif self.size[pa] self.size[pb]:self.p[pb] paself.size[pa] self.size[pb]else:self.p[pa] pbself.size[pb] self.size[pa]self.cnt - 1return Trueclass Solution:def maxStability(self, n: int, edges: List[List[int]], k: int) - int:def check(lim: int) - bool:uf UnionFind(n)# 第一阶段先加入所有不升级就 lim 的边for u, v, s, _ in edges:if s lim:uf.union(u, v)# 第二阶段用升级次数加入升级后 lim 的边rem kfor u, v, s, _ in edges:if s * 2 lim and rem 0:if uf.union(u, v):rem - 1return uf.cnt 1# 预处理检查必选边uf UnionFind(n)mn 10**6for u, v, s, must in edges:if must:mn min(mn, s)if not uf.union(u, v):return -1 # 必选边形成环# 检查图是否连通for u, v, _, _ in edges:uf.union(u, v)if uf.cnt 1:return -1 # 无法连通所有节点# 二分查找最大稳定性范围 [1, mn]# mn 是必选边中的最小强度答案不可能超过它l, r 1, mnwhile l r:mid (l r 1) 1if check(mid):l midelse:r mid - 1return l核心思路1. 二分答案稳定性具有单调性——如果稳定性 x 可行则所有 y x 也可行。因此对答案进行二分查找。2. check(lim)判断是否能构造出稳定性至少为 lim 的生成树- 不升级即可达先将所有原始强度 s lim 的边加入并查集。- 升级后可达再用最多 k 次升级机会将满足 s * 2 lim 的边加入每条边最多升一次升级后强度翻倍。3. 边界检查- 必选边must 1若形成环直接返回 -1。- 若所有边包括可选边都无法使图连通返回 -1。- 答案的上界是必选边中的最小强度 mn因为必选边不能升级其最小值决定了生成树稳定性的上限。时间复杂度O((m \cdot \alpha(n) n) \cdot \log M)空间复杂度O(n)。
RELATED

相关推荐

Codex的goal功能:提升AI编程效率的5段式技巧

Codex的goal功能:提升AI编程效率的5段式技巧

1. Codex的goal功能深度解析Codex作为AI编程助手领域的重要工具,其goal功能长期以来被大多数用户低估。实际上,这个看似简单的指令背后隐藏着强大的任务规划能力,特别适合处理边界清晰、结构明确的开发任务。与常规的代码补全不同&#xff0c…

📅 2026/9/11 14:17:04
Base LLM:从NLP基础到大模型全栈开发实战指南

Base LLM:从NLP基础到大模型全栈开发实战指南

Base LLM 是一个由 Datawhale 团队开源的大语言模型全栈学习教程项目,旨在帮助开发者系统掌握从传统自然语言处理(NLP)到现代大语言模型(LLM)的完整技术栈。在当前 LLM 技术快速发展的背景下,很多开发者直接…

📅 2026/7/20 8:53:58
Kimi    LeetCode 3600. 升级后最大生成树稳定性 Java实现

Kimi LeetCode 3600. 升级后最大生成树稳定性 Java实现

LeetCode 3600. 升级后最大生成树稳定性 — Java 实现题目分析核心问题:找出一个生成树,使其稳定性(即树中最小边强度)最大化。每条可选边(must0)最多可升级一次(强度翻倍)&#xff…

📅 2026/7/24 21:18:51
MORE NEWS

更多资讯

📰

洁净车间环境监控系统设计与实践

1. 洁净车间环境监控的行业痛点在制药、电子制造、食品加工等行业,洁净车间的温湿度控制直接关系到产品质量和生产安全。传统的人工巡检方式存在三大致命缺陷:数据滞后性:每小时记录一次的手工台账无法捕捉突发性环境波动,等发现问…

📰

Windows全局文件搜索神器Everything:原理、配置与搜索技巧完全指南

电脑全局搜索Everything:丢掉“等它转圈”的日子,找回指尖即达的检索快感如果你每天都在Windows上找文件,一定经历过这种崩溃:明明知道文件名里有个关键词,但打开资源管理器右上角的搜索框,它转啊转&#x…

📰

CMSIS-6静态工程:嵌入式开发的编译期硬件建模革命

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

StaffML Vault 大规模构建 Runbook 实战:基于覆盖率分析与 Gemini 迭代生成的题库批量扩充管线

StaffML Vault 大规模构建 Runbook 实战:基于覆盖率分析与 Gemini 迭代生成的题库批量扩充管线 【免费下载链接】cs249r_book Machine Learning Systems 项目地址: https://gitcode.com/GitHub_Trending/cs/cs249r_book 导读 本指南完整讲解 cs249r / Staff…

📰

如何使用 supervisord 管理 Appsmith Docker 容器内的后端与 Caddy 进程

如何使用 supervisord 管理 Appsmith Docker 容器内的后端与 Caddy 进程 【免费下载链接】appsmith Platform to build admin panels, internal tools, and dashboards. Integrates with 25 databases and any API. 项目地址: https://gitcode.com/GitHub_Trending/ap/appsmi…

📰

PythonRobotics 动态窗口法(Dynamic Window Approach)实现解析:2D 移动机器人局部避障与轨迹规划实战

PythonRobotics 动态窗口法(Dynamic Window Approach)实现解析:2D 移动机器人局部避障与轨迹规划实战 【免费下载链接】PythonRobotics Python sample codes and textbook for robotics algorithms. 项目地址: https://gitcode.com/GitHub_…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬