LCA
Hanks_o
一名。
展开
-
倍增LCA(最近公共祖先)算法详解
算是详解吧算法策略: 比如求x和y的最近公共祖先。 先让深度较大(离根较远)的节点跳到与另一节点相同深度的位置(并不一定是同一个点)。 然后两个节点一起往上跳,跳到他们最近公共祖先的孩子停止。 然后返回结果的父亲节点即可。倍增需要用到ST表算法(差不多吧)。 没学过ST表看这里用f[i][j]表示i往上2^j的节点。 比如f[i][0]表示i的父亲,f[i][1]表示i的爷爷…… 有了原创 2017-09-02 10:33:38 · 5416 阅读 · 4 评论 -
bzoj5293: [Bjoi2018]求和(Lca)
题目传送门 。解法: k<=50 暴力算每个点到根的每个次方和。 然后求出lca差分减一下代码实现:#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#include<c...原创 2018-04-18 07:52:05 · 455 阅读 · 0 评论 -
bzoj3123: [Sdoi2013]森林(主席树+Lca+启发式合并)
题目传送门 。解法: 因为是森林。那么lca是必须求的。 但是你连接两个点的话指向父亲的方向是会变的。 比如说x原来的父亲fa。现在x要连向y了。那么fa的父亲变成了x。那我们合并两个块的时候。 将点数小的往大的合并。这样的话总复杂度不会超过nlogn。 据说这是启发式合并。维护就用主席树。 x维护x到根的信息。 合并的时候,由于方向会边。那么要先删除原来的主席树。 ...原创 2018-04-17 19:12:03 · 265 阅读 · 0 评论 -
bzoj4448: [Scoi2015]情报传递(主席树+Lca)
题目传送门 严重吐槽这题数据!! 花了一下午一直在调一个AC代码。 提交莫名WA。因为我建的是单向边。 题目说明规定了父亲。那不就是单向边吗。。 然后本机栈不够大RE了半天。 然后肉老师告诉我一个本地扩栈的方法然后我过了。。 然后又WA了。 然后%题解。发现建的都是双向边。 这题不是规定了父亲吗??? 然后建了双向才过了。。。 数据跟题意不符啊。解法: 当前第i天有个询...原创 2018-04-17 19:07:32 · 240 阅读 · 0 评论 -
bzoj2588: Spoj 10628. Count on a tree(主席树+LCA)
题目传送门 。解法: 树上主席树。 我在想要不要离散化。 想看看数据范围。 翻了翻discuss发现很神奇啊。 什么MLE,什么开longlong?? 然后我就很乖的开了long long。第i棵主席树维护根到i的信息。 如何求x到y路径的信息呢。 p表示lca。 那么用x到根+y到根-p到根-p的父亲到根就得到x到y的信息。 然后作第K大就行了呀。记得离散化。...原创 2018-04-11 19:07:46 · 199 阅读 · 0 评论 -
bzoj4326: NOIP2015 运输计划(lca+二分)
题目传送门 好题啊。解法: 比较综合。。 我一开始想: 先把所有距离求出来。 然后二分答案。 所有的路径距离>答案 说明需要建虫洞。 在所有大于答案的路径中是有交集的。 那么我们只需要在交集中找到一条边使得所有路径-边权<=答案。 然后用差分咯。 sum[i]表示1到i这条边次数都加1。 然后就差分嘛。 对于每个x和y。 1到x路径+1 1到y路径+1 1到lca路径原创 2017-12-25 14:00:46 · 349 阅读 · 0 评论 -
bzoj3732: Network(倍增LCA+最小生成树)
题目传送门 好题呀。解法: 没学过倍增LCA看这里 看到Rose跟亮哥都在做这题。 也跑去看了一下。 看了一下,想了一会儿,最长边最小? 那肯定满足最小生成树呀。。。。 所以说把最小生成树建出来然后跑lca不就完了吗。 打完之后发现诶我不会lca求路径最大值诶我只会求距离。。 肉dalao告诉我在跳lca的时候记录最大值就可以了。 然后就A了。。代码实现:#include<cst原创 2017-11-27 12:41:31 · 387 阅读 · 0 评论 -
bzoj1832: [AHOI2008]聚会(倍增lca)
题目传送门 水题呀。解法: 没学过倍增lca看这里 刚做完上一题毒瘤题scy就说初三的尽量不要看题解呀。 然后有点担忧。有些题不看题解貌似做不了诶。 然后随便点到了这道题。 看了一会儿。 卧槽?! 大水题?! 想了一会儿。 不就。。 三个点分三种情况么。肯定不能走别人走过的路呀。 然后用lca维护一下就可以了呀。 比如abc三个点, 如果a和b肯定要经过他们的最近公共祖先原创 2017-11-25 16:09:43 · 506 阅读 · 0 评论 -
bzoj4477: [Jsoi2015]字符串树(主席树+Hash+Lca)
题目传送门 。解法: 长度小于等于10? hash+主席树啊!!! 然后我就苦逼了的码了一个钟。 然后跑的贼慢倒数第三。。 网上的据说全是可持久化字典树?? 什么鬼我不会。。 只能用主席树了。建10棵主席树来维护长度不同的前缀。 然后树上主席树求一下就好了?代码实现:#include<cstdio>#include<cstring>...原创 2018-04-12 16:39:39 · 228 阅读 · 0 评论