随笔分类 - 树论——虚树
摘要:III.[SDOI2018]战略游戏 这题我居然能1A,神奇,神奇 本题是老缝合怪了,强行把一个圆方树板子跟一个虚树板子缝到了一起。不会虚树的可以参见笔者的虚树学习笔记。 具体来说,首先我们先建出圆方树出来;然后,再在圆方树上针对给定的点集跑出虚树出来;然后,对圆方树上的圆点数量做一个树上前缀和(本
阅读全文
摘要:VII.[HNOI/AHOI2018]毒瘤 题如其名 先说一下我的思路:跑出任一生成树,关于非树边的点集建虚树,然后在虚树上跑状压DP。非树边最多有 条,则非树边点集最大是 ,则虚树大小最大 ,因此状压DP复杂度是 ,显然不可
阅读全文
摘要:VI.LOJ#3077. 「2019 集训队互测 Day 4」绝目编诗 神题。 乍一看好像和虚树半毛钱关系都没有呀?没关系,过亿会就有了。 我们不妨先从暴力开始想起。 暴力怎么写?暴力怎么写?加边加边加边,搜就完事了。 没错,这里的暴力就是爆搜——搜出所有环来,然后判断是否有两个环长度相等即可。 但
阅读全文
摘要:V.CF639F Bear and Chemistry 大毒瘤题一道。 先边双缩点缩成森林,再对每组询问建出虚树,再连上边跑Tarjan求边双即可。 是不是很simple?但是相信我,码起来会让你发疯的 代码: #include<bits/stdc++.h> using namespace std;
阅读全文
摘要:IV.[HNOI2014]世界树 人傻常数大没错了,还会TLE 首先当然是建出虚树来。 然后,对于虚树中每个节点(不管是否是实点),我们可以DP出管辖它的那个节点,设为。这个可以通过二次扫描与换根法在的时间内通过两次dfs求出,假如你使用ST表求LCA的话。这
阅读全文
摘要:III.[HEOI2014]大工程 仍然建出虚树。 我们考虑设表示子树中实点(即原本点集中的点)的数量,再设表示到子树中某个实点的最长路径,则表示最短路径。 我们先考虑求和的部分。 对于一个实点,它初始值
阅读全文
摘要:II.[SDOI2011]消耗战 老套路,我们建出虚树。 这题虚树中的边是带边权的,边权为原树中两点路径中权值的。这个权值的可以通过倍增求出。 在建出虚树后,我们就可以考虑DP了。设当前点为,为同子树中所有“资源丰富”节点切断的最小代价。 如果$x
阅读全文
摘要:I.CF613D Kingdom and its Cities 建虚树时有几个事是一定不能忘的: 记得将节点按照dfs序排序; 记得将根节点加入虚树; 该清空的一定都得清空。 这题我们就可以使用虚树解决。 首先,我们建出虚树,并给所有节点一个,其中只有点集中的节点的是(因为虚树
阅读全文
摘要:虚树,是一种针对树上点集的强力运算。它可以在(其中是点集大小)的时间内,建出一棵包含点集中所有节点,以及其中某些点的lca的树出来。这棵树就被称作虚树。之后就可以在虚树上进行操作了,例如树形DP等。 建出虚树的操作主要是这样的: 我们维护一个栈,从栈顶到栈底构成原树上一
阅读全文
摘要:I.II.[ZJOI2019]语言 一开始看错题,以为同一种语言会被普及多次,然后就成了神题不会做。一看题解,发现自己看错题了,原来是垃圾题。 一个点所能到达的点,只有与它在同一条路径上出现过的点,换句话说就是经过它全部路径的并。 全部路径的并很好搞,就是全部路径端点建出虚树的大小。虚树大小也很好搞
阅读全文
摘要:XV.CF1073G Yet Another LCP Problem 这里记录一下我在思考本题时的一个感悟,即后缀数组与后缀自动机的等价性。 众所周知,SA时有一个常见思路就是针对 height 数组建一棵笛卡尔树。但是,该笛卡尔树,唯一等价于SA针对的串的反串的parent tree。具体可以分别
阅读全文