知识学报:树算法(1)

news/2025/11/9 20:08:44/文章来源:https://www.cnblogs.com/seium/p/19204287

不是题解不是教学!!!

11.7

CSES 1674

给定一颗树求他的子树有多少节点。不提。

CSES 1130

给定一棵树,要求选一些边,要求这些边连接的点没有重复。问最多选多少条边。
简单的树形 dp,对每个点统计以它为根的子树中选它和不选它最多有多少边。转移时,选这个点的至少要搭配一个不选它自己的儿子,这个儿子应该是选儿子减不选儿子最小的点。不选这个点的则没有限制。

11.8

CSES 1131

求树的直径。
之前都用两次 dfs,这次用树形 dp。对于一个点保存它到叶子节点的最长距离,然后父节点选择最长的两个这样的子节点作为自己的答案,取所有节点的最大答案。可以直接更新一个点距离叶子的最长距离,再加上新遍历的到叶子距离,然后与 \(ans\)\(\max\) 是比较简单的实现。

CSES 1132

求树上每个节点到其他节点的最远距离。
换根 dp 可以解决。第一次求以自己为根的子树中的最远距离。第二次求从父亲侧传下来的距离,取其中较大的传给儿子,如果最大的是这个子节点贡献的则传过去次大的。

CSES 1133

求树上每个节点到其他节点的距离之和。
类似上一个,不过同时要记录传过来的节点的数量,每次增加时从只增加一改为增加传过来节点数量,然后传递节点数量还要加一。

CSES 1687

求一个节点的前 k 的祖宗。
树上倍增解决。首先记录每个节点的父亲和深度,并把每个节点的 \(2^i\) 代祖宗设为 0。然后先遍历 \(i\) 再遍历所有点,对于每个点,如果这个点的第 \(2^{i-1}\) 代祖宗存在,那么这个点的第 \(2^i\) 代祖宗就是第 \(2^{i-1}\) 代祖宗的第 \(2^{i-1}\) 代祖宗。注意如果 \(k\) 大于深度则不存在这个祖宗。求答案时,从最大的 \(i\) 开始往下遍历即可。

CSES 1688

求最近公共祖先。
先利用刚刚的方法求出倍增祖宗,然后把深度较大的那个点找到和深度较小的那个点的同一层的祖宗。设较大点为初始点,较小点为目标点。如果这个祖宗就是目标点,那么最近公共祖先就是目标点。否则把祖宗和目标点一直往上找祖宗,只要没跳到同一个点就一直往上同时跳相等长度,最后结果点的父亲就是最近公共祖先。

CSES 1135

求两点之间的距离。
树上差分。先求最近公共祖先。如果目标点就是初始点的祖宗,那么距离就是两者深度之差。否则距离为目标点的深度加初始点的深度减最近公共祖先的深度乘 \(2\)

11.9

CSES 1136

给定一些路径,每条路径会给包含的节点答案加一,求每个节点的答案。
树上差分。对于每条路径,起始点和目标点加一,最近公共祖先减一,最近公共祖先的父亲减一。最后从叶子往根做前缀和。

CSES 1137

两种操作。改变一个节点的值。求以这个节点为根的子树的值之和。
利用 dfs 序,一个点的 dfs 序加它的子树的大小就是它子树的所有点。得到这个结论后线段树即可。

CSES 1138

两种操作。改变一个节点的值。求这个节点到根的路径上的全部值。
重链剖分。第一遍 dfs 求每个点的子树大小,深度和子树最大的儿子。第二遍 dfs 先走向最大的儿子,并保持链的头不变。跑完之后,跑其他的儿子,并把其他的儿子的链头作为儿子自己。这样最多有 \(logn\) 条链。这样 dfs 后建线段树,每个点就都可以找到自己所在的链开头。然后对于一个节点,求它到链头之间的和加到答案里,然后这个点跳到链头的父亲处,直到跳到根节点的父亲(即 \(0\))即为答案。复杂度为 \(O(nlog^2n)\)
注意是重儿子是看子树大小而不是深度,如果是深度就变成长链剖分,时间复杂度变成根号了。

CSES 2134

两种操作。改变一个节点的值,求两点间路径上的最大值。
重链剖分。把两个节点中深度较大的那个往上跳一条链并途中统计答案,直到两个节点都到同一条链,最后再求这两个之间的答案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[译] CQRS Without The Complexity

原文链接:https://docs.eventsourcingdb.io/blog/2025/11/06/cqrs-without-the-complexity/想象一下,你正站在本地图书馆的柜台前。你想借一本书——就比如《2001:太空奥德赛》。你告诉图书管理员,他们检查书是否在…

Jetson AGX Thor —— 英伟达NVIDIA Jetson AGX Thor 128G开发者套件 AI智能 T5000模组

Jetson AGX Thor —— 英伟达NVIDIA Jetson AGX Thor 128G开发者套件 AI智能 T5000模组本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多份资料所成,在这之…

科技赋能塞上农业:宁夏从黄土地到绿硅谷的蝶变 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Python 循环引用怎么破?用 weakref 轻松解决 GC 回收难题

Python 循环引用怎么破?用 weakref 轻松解决 GC 回收难题 如果你开发过链表、树、图等数据结构,大概率会遇到一个棘手问题:明明用del删除了所有对象的引用,内存却依然居高不下 —— 这就是 “循环引用” 导致的 GC…

实用指南:Starlake:一款免费开源的ETL数据管道工具

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

[LangChain] 16. 检索优化

RAG 标准流程:索引:外挂知识库 检索 生成Advanced RAG 针对上述 3 个阶段做了优化。例如检索阶段,新增了 检索前处理 以及 检索后处理。 检索前处理:查询转换 查询扩充 ......查询扩充(Query Expansion) 在不改变…

那坍塌废墟 铺满尘垢 回忆中 谁仍昂着头 谁撕开 簇拥的伤口 搅动一汪 腐烂的血肉

test35 7-A 火车站 (train.cpp) 首先对二元组的入栈时间排序出一个出栈时间序列,你就是想要掰成尽可能少的单调下降子序列,如果你有直接并且极度自信你可以直接输出最长上升子序列的长度。考虑这个怎么连接起来,你顺…

详细介绍:Excel如何排序?【图文详解】Excel表格排序?Excel自动排序?

详细介绍:Excel如何排序?【图文详解】Excel表格排序?Excel自动排序?2025-11-09 19:59 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: au…

Python实践指南:del与__del__的正确用法,避坑指南

Python实践指南:del与__del__的正确用法,避坑指南 del与与和__del__是最容易被误用的特性之一——有人把del当成“删除对象的命令”,有人把__del__当成“内存释放的工具”,结果写出漏洞百出的代码:文件关不掉、数…

摸鱼笔记[4]-电脑桌面常用软件简介

简要简介一下工作电脑桌面常用的那些软件(以防以后需要恢复🤔).摘要 简要简介一下工作电脑桌面常用的那些软件(以防以后需要恢复🤔). 列举 PS C:\Users\25578\Desktop> tree.com /f 卷 OS 的文件夹 PATH 列表 卷…

P10627 [JOI Open 2024] 中暑 / Heat Stroke

P10627 [JOI Open 2024] 中暑 / Heat Stroke P10627 [JOI Open 2024] 中暑 / Heat Stroke - 洛谷 (luogu.com.cn) Solution 限制:在一个人坐飞机之前,两边的医院必须住满。 先考虑 Sub4,每条路上只有前两个人有用,…

从监听风险到绝对隐私:Zoom偷听门后,Briefing+CPolar重新定义远程会议安全标准 - 教程

从监听风险到绝对隐私:Zoom偷听门后,Briefing+CPolar重新定义远程会议安全标准 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

【做题记录】多校-ds

C. [Ynoi2005] rmscne 直接做不好维护,考虑扫描线。用线段树对每个位置 \(i\) 维护 \(p_i\) 表示 \([i,p_i]\) 是 \([i,r]\) 的最小的合法子区间。维护方式很简单,当加入 \(a_r\) 时,设上一次出现的位置为 \(j\),则…

11-08 题

11-08 题 目录11-08 题P5405 [CTS2019] 氪金手游 - 洛谷AT_agc036_f [AGC036F] Square Constraints - 洛谷F - Almost Sorted 2G - One Time Swap 2P13004 [GCJ 2022 Finals] Schrdinger and Pavlov - 洛谷Problem - 1…

POSIX兼容系统上read和write系统调用的行为总结

关于UNIX和Linux的宣传语中,一切皆文件应该是最广为人知的一句。 不管是普通文件,还是硬件设备、管道、网络套接字,在Linux甚至还有信号和定时器都共享一套相似的api,大家可以用类似的代码完成各种不同的任务,大大…

AI也能管文件?RustFS+Claude实现智能存储自动化!

AI也能管文件?RustFS+Claude实现智能存储自动化!2025年,当Claude 4.5宣布可​连续编程30小时不"断片" ​,而RustFS凭借零GC设计将存储性能提升42% 时,我们终于意识到:AI管理存储系统的时代已经到来。一…

跟着小码学算法Day16:对称二叉树 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

摸鱼笔记[3]-给windows添加类似macOS的按空格预览

🌟 神器「QuickLook」让 Windows 也能像 macOS 一样,空格键一按👇 ✨ 视频 / 图片 / PDF / PSD / 压缩包…统统秒开!零加载零等待~摘要 🌟 神器「QuickLook」让 Windows 也能像 macOS 一样,空格键一按👇…

11.8 联考总结

11.8 联考总结 T1题意较复杂,读懂之后比较简单。发现T3是计数题,很好。先开 T3 ,比想象中简单,思路非常自然。回去看T2发现有简单 \(O(n\log n)\) 做法,84分!但我想得非常复杂,但还有更简单的 \(O(n^2)\),52分…

Spring BeanDefinition接口

[[Spring IOC 源码学习总笔记]] BeanDefinition BeanDefinition 主要是用来描述Bean,主要包括:Bean的属性、是否单例、延迟加载、Bean的名称、构造方法等。 简而言之: 在容器中的 一个Bean 对应一个 BeanDefinition…