![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
倍增LCA
AcerMo
一只辣鸡大学生
展开
-
BZOJ5293&&洛谷P4427[BJOI2018]求和
一眼看上去LCA+暴力,emm30分,弃疗然后发现这道题不用修改,也就是说我们可以提前预处理出所有的pow(i,k),我们定义po[i][k]表示i在k次方意义下的前缀和,也就是说从根到i在k次方意义下的前缀和,然后后面取出的时候,要减去不在u->v路径上的部分,直接查表就好代码//By AcerMo#include<cmath> #include<cstdio>...原创 2018-07-08 15:32:09 · 342 阅读 · 0 评论 -
BZOJ4236&&洛谷P4281 [AHOI2008]紧急集合 / 聚会
倍增LCA 最短路径就是三条LCA交点到这三个点的距离,不难想出,三个点的LCA必定在两两的LCA中,因为我们总能 找到一个点,使得另两个点到第三个点必须经过这个点,然后通过玄学的画图,发现,三点的LCA中,有两个相同,并且剩下的那个就是这三条链的交点,emmm不知道咋证明 代码//By AcerMo#include<cmath>#include<cstdio&g...原创 2018-09-15 16:02:48 · 324 阅读 · 0 评论 -
BZOJ2819 Nim
隔壁尹神说树剖裸题太巨了先说一个~~(你M)~~nim游戏的性质就是所有堆的石子的数量Xor起来不等于0先手必胜,我也不知道咋证明于是乎我们就可以大力维护树上的Xor路径,咋维护呢?先求dfs序,转化成区间问题,然后用树状数组维护一下就好了,查询的时候,求一条x–>rt的Xor路径,再求一条y–>rt的Xor路径,Xor一下,发现lca(x,y)以上就没了,但是少了...原创 2018-09-14 15:57:58 · 185 阅读 · 0 评论 -
BZOJ4326&&洛谷P2680 运输计划
倍增LCA+差分+二分答案简称毒瘤题我们预处理从根到每个点的dis值,然后把每条边的边权放到点上,然后处理每条航线起点终点的lca,然后我们二分一个改完权值的的路线长,去检验是否能达到,如何检验呢?先把所有路线长大于mid的路线捡出来,然后看他和mid差多少,取一个最大值,这是要改造的道路的最小值,若比他还小,那么dis-x>mid不符合条件,然后是选出来的道路被经过次数要大...原创 2018-09-14 11:25:26 · 226 阅读 · 0 评论 -
BZOJ2783&&洛谷P3252 [JLOI2012]树
倍增这个肯定是一条自顶向下的链,我们在dfs的时候,处理好val数组,然后倍增向上跳,看看满足有一个点到当前点正好为s就好了代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm&g...原创 2018-09-03 14:28:01 · 192 阅读 · 0 评论 -
P3398 仓鼠找sugar
lca裸题(隔壁尹神用了树剖太巨了%%%%)题中说走最短路,显然就是每个人先走到起点和终点的lca,然后再前往终点,所以如果其中一个人的起点终点的lca的深度大于另一个人的起点and终点,那么显然他们不会有相交的路线可能在一条路径上的情况有四种第一个人的起点是a,终点是b,lca是l1,第二个人分别是c,d,l2第一种合法情况是a->l2->l1->b第二种合...原创 2018-09-03 09:14:07 · 185 阅读 · 0 评论 -
BZOJ4668 冷战
一道并查集好题,用到了启发式合并,也就是传说中的按秩合并,但是这道题不能用路径压缩,为什么我们之后说先说如何确定连接两个块的时间,我们用一个vis数组存一个时间,我们在按秩合并时,每次相当于给一棵siz大的树接上一棵小子树,那么以后再有连接到小子树的边,只会连接到大树上,所以小子树的vis确定为当前边的编号后,就不会再变,所以就放心了,查询的时候呢?我们不难想到LCA,两个点之间只有一条简单路...原创 2018-08-16 19:33:29 · 265 阅读 · 0 评论 -
洛谷P3128USACO最大流[树上差分入门]
一道树上差分的入手好题,中文题面不再赘述读完题后,我们发现,答案就是图中的点被经过的最多次数,即有多少条路径经过它,暴力期望得分20~40分,正解是什么呢?树上差分+LCA没错,和差分的操作一样,在区间的左端点加一,在右端点+1的位置减一,只不过放到了树上,我们先预处理每个点的LCA,之后我们发现了一些树上差分的性质1.假如我们现在有一条从u->v的路径,那么假如u和v的lca为a,那么u-...原创 2018-06-25 14:49:07 · 327 阅读 · 0 评论 -
BZOJ3631&&洛谷P3258[JLOI2014]松鼠的新家
树上差分裸题两个目标点之间的最短路径上的房间都要放一个糖,所以用树上差分,然后因为从一个房间出发是不需要糖果的,所以最后输出之前要减一再输出看这里代码//By AcerMo#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include&l...原创 2018-06-25 15:23:22 · 267 阅读 · 0 评论 -
洛谷P1967货车运输
这道题 首先不难看出要先求一个最大生成树,因为我们在尽量图联通的情况下,使两点之间有一条权值最大的边,所以Kru跑一遍最大生成树;然后会有很显然的事情就是裸的生成树只能求总和,但我们需要知道树上有哪条边,所以在合并两个联通块时,将两个端点以及他们间的边加入另一个图中,那么显然新图中只包含最大生成树上的边,然后就是求两点之间的最长边,一个比较暴力的做法是floyed求任意两点间的最长边,但我们观察到...原创 2018-06-16 16:50:29 · 302 阅读 · 0 评论 -
BZOJ3732Network
和洛谷1967一样,只不过是求一个最小生成树,然后和上一道题一样,先构建新图,然后lca求到祖先距离的最大值代码//By AcerMo#include<cmath>#include<queue>#include<cstdio>#include<vector>#include<cstring>#include<iostrea...原创 2018-06-16 17:24:53 · 284 阅读 · 0 评论 -
BZOJ4424&&CF19E Fairy
讲不清,先挖个坑,反正是用树上差分做的//By AcerMo #include<cmath>#include<queue>#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>原创 2018-07-06 20:30:51 · 211 阅读 · 0 评论 -
BZOJ2815&&洛谷P2597 [ZJOI2012]灾难
拓扑+LCA思路清奇的一道好题这个题真的不毒瘤!!吐槽一下出题人如何同时吓死草原上的羊??先考虑一下暴力反向建图跑个拓扑就完事了考虑一些特殊的情况假如输入的是一棵树,那么一个点的贡献就是他的子树大小-1,也就是子树中除他以外的所有点,但是大多数情况输入是一个DAG,那我们是不是可以找到一种方法,把它转化成一棵树呢?我们考虑样例的情况不难发现,若是4号点凉了,当且仅当2,3都凉了...原创 2018-10-25 11:02:51 · 281 阅读 · 0 评论