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

网站空间备份公司网站打不开

网站空间备份,公司网站打不开,wordpress jnews,合肥网站建设套餐Leetcode 3600. Maximize Spanning Tree Stability with Upgrades 1. 解题思路2. 代码实现 题目链接: 3600. Maximize Spanning Tree Stability with Upgrades 1. 解题思路 这一题核心思路就是一个二分法的思路。我们定义函数is_possible(x),表示是否存在一个树的…
  • Leetcode 3600. Maximize Spanning Tree Stability with Upgrades
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接: 3600. Maximize Spanning Tree Stability with Upgrades

1. 解题思路

这一题核心思路就是一个二分法的思路。我们定义函数is_possible(x),表示是否存在一个树的构造,使得任意一条边的长度均不少于 x x x

显然,这里有两个前提条件就是:

  • 所有 m u s t = 1 must=1 must=1的边本身不能够成环;
  • 至少存在一种构造能够将所有的点连接起来;

如果这两者均不成立,那么直接返回 − 1 -1 1即可。

然后,我们只需要找到上下确界,然后进行二分查找即可。这个上确界显然就是 m u s t = 1 must=1 must=1的边的最小值。而下确界显然就是 0 0 0

于是,问题的核心就变成考察对于任意的 x x x,是否存在一种构造使得 k k k次升级之内能够获得一个满足条件的树了。而这个我们可以通过DSU算法来求得,只需要将所有满足条件的边全部连起来,看看其是否能将所有的点连通即可。

而关于DSU算法的具体内容,网上反正有很多了,我自己也有一篇水文《经典算法:并查集(DSU)结构简介》作为备忘,有兴趣的读者自己了解下就行了。

2. 代码实现

给出python代码实现如下:

class DSU:def __init__(self, N):self.node = Nself.cluster = Nself.root = [i for i in range(N)]def find(self, k):if self.root[k] != k:self.root[k] = self.find(self.root[k])return self.root[k]def union(self, a, b):x = self.find(a)y = self.find(b)if x != y:self.root[y] = xself.cluster -= 1returndef copy_dsu(dsu):n = dsu.nodenew_dsu = DSU(n)new_dsu.root = deepcopy(dsu.root)new_dsu.cluster = dsu.clusterreturn new_dsuclass Solution:def maxStability(self, n: int, edges: List[List[int]], k: int) -> int:must = [(u,v,w) for u, v, w, m in edges if m == 1]candi = [(u,v,w) for u, v, w, m in edges if m == 0]candi = sorted(candi, key=lambda x: x[2], reverse=True)dsu = DSU(n)l, r = 0, math.inffor u, v, w in must:if dsu.find(u) == dsu.find(v):return -1dsu.union(u, v)r = min(r, w)r = 2*candi[0][2] if r == math.inf else rdef is_possible(m):_dsu = copy_dsu(dsu)cnt = 0for u, v, w in candi:if w * 2 < m or (w < m and cnt >= k):breakif _dsu.find(u) == _dsu.find(v):continueif w < m:cnt += 1_dsu.union(u, v)if _dsu.cluster == 1:breakreturn _dsu.cluster == 1if is_possible(r):return relif not is_possible(l):return -1while r-l > 1:m = (l+r) // 2if is_possible(m):l = melse:r = mreturn l

提交代码评测得到:耗时1271ms,占用内存74.06MB。

http://www.dtcms.com/wzjs/596895.html

相关文章:

  • 网站定位代码Python电影网站开发
  • 开发公司网站建设凡科建站的优缺点
  • 网站如何运营管理新沂网站设计
  • 代做网站的公司有哪些WordPress 支付宝支付
  • 网站建设的来源网站作业免费下载
  • 做网站 江门php 快速网站开发
  • 上海公司网站建设静态网站开发实训的目的
  • 网站的搜索引擎招聘网站怎么做市场
  • 网站建设什么佛山市建设工程有限公司
  • 二手房网站制作教程h5免费
  • 山东住房和城乡建设厅网站电话网站运营与推广计划书怎么做
  • 网站建设要学多久如何申请企业邮箱
  • 单位如何建设网站网站备案完成通知
  • qq恢复官方网站网站设计目前和将来的就业前景
  • 用discuz做行业网站网站快照诊断
  • 专业做图表的网站网站首页图片叫什么
  • 体育门户网站源码做电商网站需要多少钱
  • 请问怎么做网站十款免费软件app下载
  • 网站开发毕设开题报告怎么写泉州网站平台建设公司
  • 深圳均安网站制作软件商店电脑版官方下载
  • 嘉兴网站建设品牌升级自媒体135手机版
  • 网站建设网站优化深圳网站建设注意事项
  • 福州建设网站公司网站改版 域名
  • 厦门网站建设商家wordpress文章管理模板下载
  • 医院网站建设方案青岛卓信ajax实现wordpress导航栏
  • 网站建设及经营应解决好的问题网络推广方案包括哪些内容
  • 如何选择丹徒网站建设网站建设主要营销内客
  • dede增加手机网站wordpress 左边栏
  • 民族团结 网站建设淘宝美工培训班
  • 江西建设银行招聘网站网页制作与设计怎么设置圆角