![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
倍增
EMber _
人但有追求,世界亦会让路。
展开
-
倍增LCA复习
时间过去了如此之久,我连倍增LCA都不怎么记得了,要粗事啊。 首先预处理层数和每个节点的父亲,然后预处理p数组,p[i,j]表示i向上第2^j个祖先。最后对于每个询问x,y先把x,y变成同一层数的(x或y向上走直到两个层数相等),然后x,y同时向上走,直到x和y的父亲相同位置。 代码(转自http://www.tuicool.com/articles/N7jQV32)//1. DFS预处理出所有原创 2016-09-20 16:29:11 · 313 阅读 · 0 评论 -
bzoj4773负环
Description在忘记考虑负环之后,黎瑟的算法又出错了。对于边带权的有向图 G = (V, E),请找出一个点数最小的环,使得 环上的边权和为负数。保证图中不包含重边和自环。 Input第1两个整数n, m,表示图的点数和边数。 接下来的m行,每<=三个整数ui, vi, wi,表<=有一条从ui到vi,权值为wi的有向边。 2 <= n <= 300 0 <= m <= n(n <原创 2017-03-24 22:04:07 · 665 阅读 · 0 评论 -
JZOJ5385. 【NOIP2017提高A组模拟9.23】Carry 树上倍增
题意:给你一棵树,q对点,要求每次从qx走到qy的花费为最大路径权值,可以把一条边减小L,问最少花费。= =简单题,比赛的时候只是扫了一眼,觉得应该是树剖裸题,然后就放了= = 事实上也可以用树剖来做,但是非常复杂,难以维护。 倍增就好了,和那个次小生成树一样,维护一个每个点往上2^i的路径的最大次大权值。然后那个L的那个东西,我每次在求一对点的LCA过程中,直接用已经求出的最大次大维护,然后最原创 2017-09-23 15:58:46 · 349 阅读 · 0 评论 -
codeforces 832D Misha, Grisha and Underground 倍增lca
题意:给一棵树,给出q个询问,每次a,b,c三个点,选择出一个点,使得这个点到其他两个点的公公路径最长。 明显分类讨论,像某人(@SFN1036)一样搞结论是行不通的(○´・д・)ノ。 讨论一下任意两个点的路径,肯定是lca嘛,根据lca的性质,肯定深度比两个点都要小,那么公共路径的话就是(dis(a,b)+dis(b,c)-dis(a,c))/2+1,这个很显然了。 一开始还想过是不是有可能原创 2017-09-27 21:00:43 · 416 阅读 · 0 评论 -
bzoj1977 [BeiJing2010组队]次小生成树 倍增
标准的次小生成树(严格次小) 先想想不严格怎么做(好像都差不多) 枚举每一条边来更新,这是n^2算法。 然后这题的话我们对于每一个点,预处理,倍增一下求他到他的第2^j个父亲所经过的边的最大值和次大值。 然后我们先求出最小生成树,然后对于最小生成树上相邻两个点之间所有边,记录最大值和所选的边的差,如果最大值和原来的边相等就换成次大值,最后答案就是最小生成树+最小差值。#include<cst原创 2017-09-12 18:36:29 · 191 阅读 · 0 评论