Kimi    LeetCode LCP 05. 发 LeetCoin Python3实现
根据搜索结果我已经获取了LCP 05. 发LeetCoin的完整解题思路和Python3实现。这道题的核心是DFS序 带懒惰标记的线段树。解题思路核心思想DFS序 线段树这道题涉及三种操作1. 单点更新给某个成员发LeetCoin2. 区间更新给某个成员及其所有下属发LeetCoin3. 区间查询查询某个成员及其所有下属的LeetCoin总和由于团队管理结构是一棵树直接对子树操作效率低。关键技巧是1. DFS序时间戳通过DFS遍历为每个节点记录进入时间 left[u] 和离开时间 right[u]。这样以节点u为根的子树中的所有节点在DFS序中形成一个连续区间 [left[u], right[u]]2. 线段树将树上的子树操作转化为线段树上的区间操作使用带懒惰标记Lazy Propagation的线段树实现O(log n)的区间更新和查询复杂度分析- 时间复杂度建立DFS序 O(n)每次操作 O(log n)总复杂度 O(n Q·log n)- 空间复杂度O(n)---Python3 完整实现pythonclass Solution:MOD 10**9 7def bonus(self, n: int, leadership: list[list[int]], operations: list[list[int]]) - list[int]:# 构建邻接表graph [[] for _ in range(n 1)]for a, b in leadership:graph[a].append(b)# DFS序记录每个节点的子树区间 [left[u], right[u]]left [0] * (n 1) # 进入时间right [0] * (n 1) # 离开时间time 0def dfs(u: int):nonlocal timetime 1left[u] timefor v in graph[u]:dfs(v)right[u] time# 从根节点1开始DFSdfs(1)# 线段树使用4*n的数组size 4 * ntree [0] * size # 区间和lazy [0] * size # 懒惰标记def push_down(node: int, node_left: int, node_right: int):下推懒惰标记到子节点if lazy[node] 0 or node_left node_right:returnmid (node_left node_right) // 2left_child node * 2right_child node * 2 1# 更新左子节点left_len mid - node_left 1tree[left_child] (tree[left_child] lazy[node] * left_len) % self.MODlazy[left_child] (lazy[left_child] lazy[node]) % self.MOD# 更新右子节点right_len node_right - midtree[right_child] (tree[right_child] lazy[node] * right_len) % self.MODlazy[right_child] (lazy[right_child] lazy[node]) % self.MOD# 清除当前节点的懒惰标记lazy[node] 0def update(node: int, node_left: int, node_right: int, q_left: int, q_right: int, val: int):区间更新将[q_left, q_right]范围内的值增加valif q_left node_left and node_right q_right:# 完全覆盖tree[node] (tree[node] val * (node_right - node_left 1)) % self.MODlazy[node] (lazy[node] val) % self.MODreturnpush_down(node, node_left, node_right)mid (node_left node_right) // 2if q_left mid:update(node * 2, node_left, mid, q_left, q_right, val)if q_right mid:update(node * 2 1, mid 1, node_right, q_left, q_right, val)# 向上更新tree[node] (tree[node * 2] tree[node * 2 1]) % self.MODdef query(node: int, node_left: int, node_right: int, q_left: int, q_right: int) - int:区间查询查询[q_left, q_right]范围内的和if q_left node_left and node_right q_right:return tree[node]push_down(node, node_left, node_right)mid (node_left node_right) // 2res 0if q_left mid:res (res query(node * 2, node_left, mid, q_left, q_right)) % self.MODif q_right mid:res (res query(node * 2 1, mid 1, node_right, q_left, q_right)) % self.MODreturn res# 处理操作ans []for op in operations:if op[0] 1:# 单点更新给成员op[1]发op[2]个LeetCoinu op[1]update(1, 1, n, left[u], left[u], op[2])elif op[0] 2:# 区间更新给成员op[1]及其所有下属发op[2]个LeetCoinu op[1]update(1, 1, n, left[u], right[u], op[2])else:# 区间查询查询成员op[1]及其所有下属的LeetCoin总和u op[1]ans.append(query(1, 1, n, left[u], right[u]))return ans---关键要点说明要点 说明DFS序 通过一次DFS将树结构线性化使每个子树对应一个连续区间线段树数组 使用4n大小的数组存储线段树节点i的左子节点为2i右子节点为2i1懒惰标记 区间更新时先打标记查询或再次更新时才下推保证O(log n)复杂度取模 所有更新和查询结果都要对10^97取模这个实现是标准的线段树模板应用DFS序将树上的子树问题转化为区间问题线段树高效处理区间更新和查询

相关新闻

Wecom酱 3步部署指南:把企业微信消息推送到个人微信

Wecom酱 3步部署指南:把企业微信消息推送到个人微信

Wecom酱 3步部署指南:把企业微信消息推送到个人微信 【免费下载链接】wecomchan 微信推送服务Server酱的开源替代。通过企业微信向微信推送消息的配置文档、直推函数和可自行搭建的在线服务代码。 项目地址: https://gitcode.com/gh_mirrors/we/wecomchan 跟…

2026/8/21 21:42:12 阅读更多 →
Photon 光影完全指南:3 分钟装好,让 Minecraft 的天空、光照与水体全面质变

Photon 光影完全指南:3 分钟装好,让 Minecraft 的天空、光照与水体全面质变

Photon 光影完全指南:3 分钟装好,让 Minecraft 的天空、光照与水体全面质变 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon 你有没有发现,Minecraf…

2026/8/23 0:06:22 阅读更多 →
磁力链接聚合搜索工具magnetW:26个资源站一键搜索完整指南

磁力链接聚合搜索工具magnetW:26个资源站一键搜索完整指南

磁力链接聚合搜索工具magnetW:26个资源站一键搜索完整指南 【免费下载链接】magnetW [已失效,不再维护] 项目地址: https://gitcode.com/gh_mirrors/ma/magnetW 想找一份特定的教程,得开 5 个网站逐个搜、逐个比;找完这部影…

2026/8/22 22:01:10 阅读更多 →

最新新闻

游戏自动化怎么做到的:MAA 明日方舟助手拆解

游戏自动化怎么做到的:MAA 明日方舟助手拆解

游戏自动化怎么做到的:MAA 明日方舟助手拆解 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.com/…

2026/8/23 0:06:55 阅读更多 →
免费的 Ollama 界面:不开终端,本地模型如何开箱即用

免费的 Ollama 界面:不开终端,本地模型如何开箱即用

免费的 Ollama 界面:不开终端,本地模型如何开箱即用 【免费下载链接】ollama-ui Simple HTML UI for Ollama 项目地址: https://gitcode.com/gh_mirrors/ol/ollama-ui ollama-ui 是一个免费的单页 Ollama 界面:在浏览器里直接下拉选择…

2026/8/23 0:06:55 阅读更多 →
Burp Suite 中文汉化插件:一个 Agent 参数让界面变中文

Burp Suite 中文汉化插件:一个 Agent 参数让界面变中文

Burp Suite 中文汉化插件:一个 Agent 参数让界面变中文 【免费下载链接】BurpSuiteCN-Release BurpSuite汉化发布 项目地址: https://gitcode.com/gh_mirrors/bu/BurpSuiteCN-Release BurpSuiteCN-Release 是一个 Burp Suite 中文汉化发布项目。它不改原始程…

2026/8/23 0:06:55 阅读更多 →
PC游戏没有分屏本地双人?Universal Split Screen 让你用2套键鼠同屏开黑

PC游戏没有分屏本地双人?Universal Split Screen 让你用2套键鼠同屏开黑

PC游戏没有分屏本地双人?Universal Split Screen 让你用2套键鼠同屏开黑 【免费下载链接】UniversalSplitScreen Split screen multiplayer for any game with multiple keyboards, mice and controllers. 项目地址: https://gitcode.com/gh_mirrors/un/Universal…

2026/8/23 0:06:55 阅读更多 →
video-analyzer:AI视频分析,把视频转成可编辑的文字说明

video-analyzer:AI视频分析,把视频转成可编辑的文字说明

video-analyzer:AI视频分析,把视频转成可编辑的文字说明 【免费下载链接】video-analyzer Analyze videos using LLMs, Computer Vision and Automatic Speech Recognition 项目地址: https://gitcode.com/gh_mirrors/vi/video-analyzer video-an…

2026/8/23 0:06:55 阅读更多 →
基于CNN-GRU+SHAP可解释性分析的回归预测 Matlab代码(多输入单输出)

基于CNN-GRU+SHAP可解释性分析的回归预测 Matlab代码(多输入单输出)

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

2026/8/23 0:05:54 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/22 18:08:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →