摘要: [C++]树链剖分 预备知识 树的基础知识 关于这个本文有介绍 邻接表存图 线段树基础 会区间加法和区间结合就可以了P3372 建议阅读这篇Blog 最近公共祖先LCA 虽然用不到这个思想 但是有类似的 有助于快速理解代码 建议阅读这篇Blog 题意解读 题目描述 如题,已知一棵包含 \(N\) 个 阅读全文
posted @ 2021-04-05 10:18 Rosyr 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 线段树 区间修改 区间查询 请先阅读上一篇Bolg 算法思想 这次要引入一个核心变量: lazy 懒标记 为了达到区间修改的目的 又为了减少运算量 所以就需要引入懒标记这个变量 用来满足 即用即推 没有用到的时候便以懒标记的形式存在线段中 子线段要用了便向下推行 \(lazy\) 举个例子: 如果我 阅读全文
posted @ 2021-03-30 19:20 Rosyr 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 线段树 区间修改 单点查询 请先阅读上一篇Bolg 算法思想 由于是区间修改 那就把下放的每一个线段给套上一层标记 来表达增加的值 单点查询就把那些标记穿起来就行了 当然 还要加上那原来的值 来举个例子: 我想要更改绿色这段区间的值 那就在绿色这段上下推标记 然后我又想在蓝色这段上更改区间值 那就继 阅读全文
posted @ 2021-03-28 11:49 Rosyr 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 线段树 区间查询 单点修改 算法思想 这个算法是用于数组的查询和修改 可以高效的进行查询修改 但是会增加内存的使用 本质上是一种 空间换时间 的算法 这个算法把一串数组无限二分 直到分的只剩下一个数据 将每一段看成一个节点 这样就组成了一个树形结构 故名 线段树 代码实现 实现这个代码一共分三个步骤 阅读全文
posted @ 2021-03-28 11:20 Rosyr 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 树形DP 保卫王国P5024 前置知识 1、邻接表 + Dfs(深度优先搜索) 2、基础DP(如 01背包 ) 3、最小公共祖先(LCA) LCA我有写过Blog 首先解读一下题意 城市即为节点 每个节点都有一个驻军资金 即节点的权值 现在要让每两个节点之间至少有一个节点拥有驻军 并给出 m 个要求 阅读全文
posted @ 2021-03-21 09:44 Rosyr 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 最近公共祖先 LCA 倍增写法 LCA的倍增主要由三个重要的过程组成 预处理lg数组 DFS求fa depth 倍增节点 观看以下内容前建议先把完整代码大致纵览一遍,有利于理解各个函数的意义 倍增思想 暴力解决LCA是通过 x 和 y 一个一个的往上跳 而倍增的思想是希望节点能够一次性尽可能的多跳 阅读全文
posted @ 2021-03-21 09:40 Rosyr 阅读(114) 评论(0) 推荐(1) 编辑