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

卓老师建站网站后台如何直接登陆太平洋建设集团网站

卓老师建站网站后台如何直接登陆,太平洋建设集团网站,广东深圳网站建设微信商城开发,望野的翻译执行结果#xff1a;通过 题目#xff1a;3244 新增道路查询后的最短距离II 给你一个整数 n 和一个二维整数数组 queries。 有 n 个城市#xff0c;编号从 0 到 n - 1。初始时#xff0c;每个城市 i 都有一条单向道路通往城市 i 1#xff08; 0 i n - 1…执行结果通过 题目3244 新增道路查询后的最短距离II 给你一个整数 n 和一个二维整数数组 queries。 有 n 个城市编号从 0 到 n - 1。初始时每个城市 i 都有一条单向道路通往城市 i 1 0 i n - 1。 queries[i] [ui, vi] 表示新建一条从城市 ui 到城市 vi 的单向道路。每次查询后你需要找到从城市 0 到城市 n - 1 的最短路径的长度。 所有查询中不会存在两个查询都满足 queries[i][0] queries[j][0] queries[i][1] queries[j][1]。 返回一个数组 answer对于范围 [0, queries.length - 1] 中的每个 ianswer[i] 是处理完前 i 1 个查询后从城市 0 到城市 n - 1 的最短路径的长度。 示例 1 输入 n 5, queries [[2, 4], [0, 2], [0, 4]] 输出 [3, 2, 1] 解释 新增一条从 2 到 4 的道路后从 0 到 4 的最短路径长度为 3。 新增一条从 0 到 2 的道路后从 0 到 4 的最短路径长度为 2。 新增一条从 0 到 4 的道路后从 0 到 4 的最短路径长度为 1。 示例 2 输入 n 4, queries [[0, 3], [0, 2]] 输出 [1, 1] 解释 新增一条从 0 到 3 的道路后从 0 到 3 的最短路径长度为 1。 新增一条从 0 到 2 的道路后从 0 到 3 的最短路径长度仍为 1。 提示: 3 n 1051 queries.length 105queries[i].length 20 queries[i][0] queries[i][1] n1 queries[i][1] - queries[i][0]查询中不存在重复的道路。不存在两个查询都满足 i ! j 且 queries[i][0] queries[j][0] queries[i][1] queries[j][1]。 代码以及解题思路 代码 class Solution:def shortestDistanceAfterQueries(self, n: int, queries: List[List[int]]) - List[int]:st LazySegmentTree(n)ans []for l, r in queries:st.update(1,1,n,l2,r, 0)ans.append(st.cnt[1]-1)return ansclass LazySegmentTree:def __init__(self, n: int):self.cnt [0] * (4 * n)self.todo [-1] * (4 * n)self.build(1,1,n)# 初始化线段树 o,l,r1,1,ndef build(self, o: int, l: int, r: int) - None:if l r:self.cnt[o] 1returnm (l r) 1self.build(o * 2, l, m)self.build(o * 2 1, m 1, r)self.maintain(o)def maintain(self, o: int) - None:self.cnt[o] self.cnt[o * 2] self.cnt[o * 2 1]def do(self, o: int, val: int) - None:self.cnt[o] valself.todo[o] valdef spread(self, o: int) - None:v self.todo[o]if v 0:self.do(o * 2, v)self.do(o * 2 1, v)self.todo[o] -1def update(self, o: int, l: int, r: int, L: int, R: int, val: int) - None:if L l and r R:self.do(o, val)returnself.spread(o)m (l r) 1if m L:self.update(o * 2, l, m, L, R, val)if m R:self.update(o * 2 1, m 1, r, L, R, val)self.maintain(o)def query(self, o: int, l: int, r: int, L: int, R: int) - int:if L l and r R:return self.cnt[o]self.spread(o)m (l r) 1res 0if L m:res self.query(o * 2, l, m, L, R)if m R:res max(res, self.query(o * 2 1, m 1, r, L, R))return res 解题思路 初始化线段树 创建一个 LazySegmentTree 实例其大小为 4n因为线段树通常需要一个额外的空间来存储内部节点。初始化 cnt 数组来存储每个节点的区间内未访问元素的数量。初始化 todo 数组来存储延迟的更新操作。调用 build 方法来构建线段树初始时所有元素都是未访问的所以每个叶子节点的 cnt 值都设为 1表示该位置是未访问的。处理查询 对于每个查询 (l, r)调用 update 方法将索引从 l2 到 r注意这里的 l2 是因为题目可能有特定的索引约定比如索引 0 和 1 被视为特殊情况或者为了避免边界问题之间的所有元素标记为已访问即将其 cnt 值更新为 0。在每次更新后通过查看根节点的 cnt 值即整个数组的未访问元素数量减 1 来计算最近的未访问元素与数组起始位置的距离。这是因为每次更新都会使得一个元素从未访问变为已访问而根节点的 cnt 值反映了整个数组中未访问元素的数量。减 1 是因为索引是从 0 开始的而我们需要的是距离所以需要将计数器的值转换为实际的索引距离这里假设数组中的元素是连续排列的没有空缺。线段树的操作 build 方法用于构建线段树初始化每个叶子节点的 cnt 值。maintain 方法用于维护节点的 cnt 值确保它反映了其子节点的 cnt 值之和。do 方法用于立即更新节点的 cnt 值和 todo 值。spread 方法用于将延迟的更新操作传播到子节点。update 方法用于执行区间更新操作使用延迟技术来优化性能。query 方法虽然在这段代码中未使用但通常用于查询区间内的某些信息如最大值、最小值等。
http://www.lakalapos1.cn/news/54494/

相关文章:

  • 虚拟主机网站建设步骤?购物网站详细设计
  • 网络制作网站互联网有多少网站
  • 关于公司网站改版通知大港网站建设
  • 自己建站做足彩网站推广
  • 网站ip查询南京林业大学实验与建设网站
  • 保定建设网站及推广江苏省建设集团有限公司网站
  • dede个人网站苏宁易购官网商城
  • 青浦区网站建设什么网站用php做的
  • 沧州做网站多少钱一般网站建设步骤
  • 潍坊网站制作人才招聘云南省住房城乡建设厅网站
  • 电商网站如何制作可以做调查问卷的网站
  • 网站备案多少天科技设计公司网站模板
  • 怎么做网站主页免费做网站软件视频
  • 做网站费用怎么入账dll网站服务
  • 西安网站建设公司排行榜如何让公司网站
  • 网站模板使用教程求职网站网页设计
  • wordpress户外俱乐部主题搜索引擎优化包括哪些内容
  • 郑州网站建设丶汉狮网络友汇网网站建设管理后台设置
  • 找公司做网站多少钱西城上海网站建设
  • 陕西省建设厅三类人员报名网站深圳做微信网站制作
  • 封面型网站布局wordpress 搜索结果页
  • 网站开发实习个人小结网站建设一定要备案吗
  • 宁波网站建设i sp.net邯郸建设网
  • 什么是建设网站的主题招聘网站怎么投自己做的简历
  • 石家庄哪里有做网站零食网站制作的建设大纲
  • 东莞想做网站做便宜网站
  • 差旅网站建设双滦网站建设
  • 海西州电子商务网站建设如何免费搭建网站
  • 个人做同城网站赚钱吗微信网站建设定制
  • 广州seo网站优化培训网站服务器放置地怎么填