随笔分类 - 倍增
摘要:分析 先求出每个点到终点的最短路 我们按照海拔从大到小排序 然后求出kruskal重构树 每次答案就是一个可行子树中的最短路的最小值 代码
阅读全文
摘要:分析 先建出最小生成树 之后每次倍增找环即可 代码
阅读全文
摘要:分析 我们发现k非常的小 于是我们对于每一个点暴力维护它到根的所有节点的深度k次方之和即可 每次找到lca然后用之前处理出来的数组加加减减即可 代码
阅读全文
摘要:传送门 分析 我们可以将一个点拆成logN个点,分别代表从点i开始,长度为2^k的子串 那么当我们处理两个区间相等的关系时,对区间做二进制拆分,拆成log个区间,分别并起来即可 当然我们这样做修改是省心了,但是同时查询的时候也会带来一些麻烦……因为,我们要求的信息是最底层的,只能是长度为1的区间,而
阅读全文
摘要:传送门 分析 我们知道无论往左走还是往右走一定都是往不低于这个点的地方走 于是我们可以考虑用倍增来维护一个点向左和向右走$2^i$最远分别能走到哪里 我们可以先用单调栈求出直走一步的情况,之后再处理倍增数组 值得注意的是有可能一直往左走不是最优情况,而先向右再想左会使答案更优 于是le[x][i]=
阅读全文

浙公网安备 33010602011771号