Jebearssica's Blog

Dynamic Program: Tree

简单学习一下树上 dp 基本概念 在给定关系以树形式存在的问题中时, 如果遇到了符合 dp 解法的情况可以使用树上 dp. 举个例子, 经典的快乐指数问题. 给定一个树, 选择其中的结点满足以下规则: 结点权重和最大 一个结点若被选中, 则其父结点必定不能被选中 很显然, 大体思路是基于 DFS 的 DP. 对于一个结点而言存在三种状态: 父结点不在集合内, 自...

Keywords: inline

inline 的作用, 对编译器建议使用函数定义的代码替换每次对该函数的调用. 理论上, 这能够加速运行速度, 因为减少了函数调用的开销. 主要是消除了: 推送返回地址入栈, 推送参数入栈, 跳转到对应函数, 对应函数完成时返回这一系列过程. 额外, 我们应当注意, inline 只是建议编译器进行优化, 而非指定编译器进行优化. 编译器内部会根据一些判断决定是否真的值得要内联该函数. 将...

Prefix Sum and Adjacent Difference

理论上来讲前缀和以及差分两种思路应该是算法基础, 是那种堪比排序的基础, 按理说应该掌握得很好才对. 但由于没有系统性学习, 导致后面在学习部分变种树结构的时候非常吃力. 前缀和 是一种预处理方法, 能够实现后续相关查询达到 $O(1)$ 的时间, 以下又分几种情况 一维前缀和 这个方法通常解决”数组前 n 项之和”这个问题, 如下 std::vector<int> p...