Zhixin Cai

LCA(最近公共祖先)

今天学习了LCA算法的两种做法,tarjan和树上倍增(本质上是暴力求解的优化)。 tarjan求解LCA 该算法利用并查集缩点,离线求每个询问的两点LCA。 首先将所有点对相互储存在树上(如果要求点 $x$ 和点 $y$ 的LCA,那么将 $y$ 存在 $x$ 中作为一次询问,将 $x$ 也存在 $y$ 中),然后对树进行一次后序遍历。 在后序遍历过程中,每访问一个点,需要遍历该点的所...

CF1819B The Butcher

这篇博客主要是讲述作者在 CodeForces 的一道题目 CF1819B The Butcher 的解题过程。在解题思路方面,文章提到了需要讨论两种情况切割出一个长最大的矩形或者切割出一个宽最大的矩形,并递归判断剩余小矩形是否满足构成大矩形的条件。在实现方面,作者给出了具体的代码实现,并使用了 STL 中的 vector 和 sort 等常用函数。最后,文章总结了这道题目的时间复杂度和解题...