倍增LCA
文章平均质量分 74
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
BZOJ 1977 次小生成树 倍增LCA
题目大意:给定一个无向图,求严格次小生成树这题纠结了我同学很久。。。首先如果是不严格的次小生成树(权值可以等于最小生成树),那么我们就有一个很简单明了的算法:首先求出最小生成树 然后建立倍增LCA 枚举没进入最小生成树的边 在边的两端点的路径上寻找最大的边权 用最小生成树权值-最大边权+新边权去更新ans即可但是这道题是严格次小生成树 那么也好办 我们记录一个次大边权 如果枚举到的边权原创 2014-10-01 19:10:11 · 1575 阅读 · 0 评论 -
BZOJ 2791 Poi2012 Rendezvous 倍增LCA
题目大意:给定一棵内向森林,多次给定两个点a和b,求点对(x,y)满足:1.从a出发走x步和从b出发走y步会到达同一个点2.在1的基础上如果有多解,那么要求max(x,y)最小3.在1和2的基础上如果有多解,那么要求min(x,y)最小4.如果在1、2、3的基础上仍有多解,那么要求x>=y因此那个x>=y是用来省掉SPJ的,不是题目要求- -容易发现:如果a和b不在同一原创 2015-03-03 18:57:39 · 1802 阅读 · 0 评论 -
BZOJ 2125 最短路 静态仙人掌
题目大意:给定一棵仙人掌,多次询问两点之间的最短路静态仙人掌= = 在VFK讲仙人掌之前就想做= = 结果一直拖= =好不容易写完了= = 刚过样例 BZ就开始维护- - 维护到闭营= = 交上去还WA了= = 尼玛我这傻逼到底还是把倍增LCA写挂了= =算了回归正题首先我们的思路是这样的考虑给定的是一棵树 多次询问树上两点间距离 那么我们一般的做法是预处理每个点到原创 2015-02-18 15:02:58 · 3421 阅读 · 0 评论 -
BZOJ 3611 HEOI2014 大工程 倍增LCA+单调栈+树形DP
题目大意:给定一棵树,m次询问,每次给出k个关键点,询问这k个点之间的两两距离和、最小距离和最大距离n处理方法同2286 消耗战 地址见 http://blog.csdn.net/popoqqq/article/details/42493725这个题的DP有些麻烦 因此我把要处理的节点单独拎出来做的DP 具体状态和转移见代码#include #includ原创 2015-01-07 17:48:09 · 2710 阅读 · 0 评论 -
BZOJ 2286 SDOI2011 消耗战 倍增LCA+单调栈
题目大意:给定一棵树,边上有边权,m次询问,每次选定一些关键点,求将1号节点与所有关键点都切断所需的最小花销关键点的总数首先我们考虑暴力想法令f[x]表示切断以x为根的子树中所有关键点的最小花销g[x]表示x是不是关键点那么对于x的每个子节点y有f[x]=Σmin(g[y]?INF:f[y],Distance(x,y) )这样每次暴力做一遍树形DP,时间复杂度是O(n*原创 2015-01-07 15:26:44 · 3095 阅读 · 0 评论 -
BZOJ 3123 SDOI2013 森林 可持久化线段树+倍增LCA+启发式合并
题目大意:给定一棵森林,每个点有权值,提供两种操作:1.查询两点间路径上第k小的权值2.将两个点之间连一条边 保证连接后仍是一座森林可持久化线段树部分同Count On A Tree 只是这道题加了个连接操作对于连接操作我们要用到启发式合并 就是把小的那棵树暴力重建 很简单的一个操作但是可以证明是均摊O(nlogn)的大小我用了并查集 其实记录根就可以了此外本题的多组数据是原创 2014-10-20 11:38:16 · 2203 阅读 · 0 评论 -
BZOJ 1787 AHOI2008 紧急集合 倍增LCA
题目大意:给定一棵树,多次询问到三个点距离之和最小的点和距离首先易知到两个点距离之和最小的点一定在两点间的路径上于是到三个点距离之和最小的点一定在两两之间路径的交点上然后很容易就会知道这个交点一定是其中两个点的LCA(其实是我不会证)此外为什么不会是三个点共同的LCA呢?因为三个点共同的LCA一定是至少一对点的LCA 证明略(其实我也不会证)然后就是倍增LCA的问题了 我的倍增原创 2014-11-03 15:11:17 · 1709 阅读 · 0 评论 -
BZOJ 3732 Network Kruskal+倍增LCA
题目大意:给定一个n个点m条边的无向连通图,k次询问两点之间所有路径中最长边的最小值NOIP2013 货车运输,几乎就是原题。。。只不过最小边最大改成了最大边最小。。。首先看到最大值最小第一反应二分答案 但是二分答案O(kmlogn)明显做不了 这里我们考虑最小生成树先生成一棵最小生成树,然后每次询问利用倍增LCA求出路径上的最大权值即可本蒟蒻居然把LCA写挂了。。。 而且样例还过原创 2014-10-03 15:01:36 · 4057 阅读 · 0 评论 -
BZOJ 2588 Count on a tree 主席树+倍增LCA
题目大意:给定一棵树,每个节点有权值,询问两个节点路径上的权值第k小这题很卡时间。。。树链剖分+二分+树套树的O(nlog^4n)做法可以去死了没有修改操作,树链剖分+二分+划分树O(nlog^3n),还是死了我怒了,裸学了一发可持久化线段树(不看任何代码OTZ,我是怎么做到的0.0),二分+主席树,O(nlog^2n),居然还是死了!最后发现我SB了,完全没有必要二分,直原创 2014-10-13 16:56:56 · 2614 阅读 · 0 评论 -
BZOJ 4082 Wf2014 Surveillance 树上倍增
题目大意:给定一个nn个点的环,有kk个区间,要求选择最少的区间覆盖所有点首先我们考虑链上版本,显然我们有一个贪心的做法: 从1号节点开始,每次选择能向后走的最远的区间,直到走完所有节点为止 正确性显然 但是到了环上版本我们却不能直接套用这个算法,因为环上不存在所谓的“1号节点” 因此我们这样做: 拆环后将序列倍增,把所有区间按照右端点从小到大排序 每个区间向这个区间右端点向后能走的最远原创 2015-05-22 13:41:34 · 2272 阅读 · 1 评论