随笔分类 - 虚树
摘要:[TOC] 题目链接 "bzoj 3991: [SDOI2015]寻宝游戏" 题解 发现每次答案就是把虚树上的路径 2 接在同一关键点上的点的dfs序是相邻的 那么用set动态维护dfs序列 每次删点加点就好了 代码 c++ include include include define gc get
阅读全文
摘要:题目链接 "bzoj3572: [Hnoi2014]世界树" 题解 构建虚树 对于虚树dp 我们首先对于虚中的点,处理处每个点属于哪个点管辖,这个两边dp就好了,一次用儿子更新父亲,一次父亲更新儿子 然后用虚树中的点扩展到整棵树,考虑 若叙述中相邻两点归属于同一个点管辖,那么他们中间的点也肯定都归该
阅读全文
摘要:题目链接 "bzoj3611: [Heoi2014]大工程" 题解 虚树的构造就不讲了,详见我的上一篇博客 "bzoj 2286: [Sdoi2011]消耗战" 然后这题我们对于每条边计算全局贡献就好了 最长、短链分别维护子树中,父节点再未更新时合并新答案就好了 define int long lo
阅读全文
摘要:题目链接 "bzoj 2286: [Sdoi2011]消耗战" 题解 抽离虚树dp 对于虚树我们可以O(m)构造 dfs序排序后,易证相邻两点lca为所有出现到的lca 每次维护一个深度递增的栈,用其来维护一个节点的虚树,当其被pop出栈时他的虚数也构造完了 那么栈中序列即为链的父子关系 每次若将要
阅读全文

浙公网安备 33010602011771号