随笔分类 - 数据结构------倍增求LCA
摘要:洛谷P1967:https://www.luogu.org/problemnew/show/P1967 思路 感觉2013年D1T3并不是非常难 但是蒟蒻还是WA了一次 从题目描述中看出每个点之间有许多条路径 而我们需要的是找出整条路径中最大的最小可通过量 一开始看到题目会想到是不是最大流问题 但是
阅读全文
摘要:洛谷P4281:https://www.luogu.org/problemnew/show/P4281 思路 答案所在的点必定是三个人所在点之间路径上的一点 本蒟蒻一开始的想法是:先求出2个点之间的LCA 再求出此LCA和第3个点的LCA 但是没有考虑到有可能答案所在点可能比2个点之间的LCA深度更
阅读全文
摘要:思路 运用树上倍增法可以高效率地求出两点x,y的公共祖先LCA 我们设f[x][k]表示x的2k辈祖先 f[x][0]为x的父节点 因为从x向根节点走2k 可以看成从x走2k-1步 再走2k-1步 所以对于1≤k≤logn 有f[x][k]=f[f[x][k-1]][k-1] (类似二分思想) 预处
阅读全文
摘要:洛谷P4180:https://www.luogu.org/problemnew/show/P4180 前言 这可以说是本蒟蒻打过最长的代码了 思路 先求出此图中的最小生成树 权值为tot 我们称这棵树中的n-1条边为“树边” 其他m-n+1条边为“非树边” 枚举每条非树边(x,y,z)添加到最小生
阅读全文
摘要:POJ3417:http://poj.org/problem?id=3417 思路 我们注意到由“主要边”构成一颗树 “附加边”则是非树边 把一条附加边(x,y)加入树中 会与树上x,y之间构成一个环 因此 我们称每条附加边(x,y)都把树上x,y之间的路径覆盖一次 我们只需要统计出每条“主要边”被
阅读全文