随笔分类 - 图论算法-树相关
摘要:[BZOJ3354]创世纪(基环树+树形DP) 题面 applepi手里有一本书《创世纪》,里面记录了这样一个故事…… 上帝手中有着N 种被称作“世界元素”的东西,现在他要把它们中的一部分投放到一个新的空间中去以建造世界。每种世界元素都可以限制另外一种世界元素,所以说上帝希望所有被投放的世界元素都有
阅读全文
摘要:[BZOJ3786]星系探索(欧拉序+非旋treap) 题面、 物理学家小C的研究正遇到某个瓶颈。 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均有且仅有一个依赖星球。主星球没有依赖星球。我们定义依赖关系如下:若星球a的依赖星球是b,
阅读全文
摘要:树论算法复习笔记 省选前写的,现在发出来 树的直径 定义:树的直径是树上的最长路径。 值得注意的是,直径并不唯一 直径的性质 我们这里只讨论无负权的情况 直径两端点一定是叶子节点。 距任意点最远点一定是直径的端点,据所有点最大值最小的点一定是直径的中点。 两棵树相连,新直径的两端点一定是原四个端点中
阅读全文
摘要:[GDSOI2017]中学生数据结构题(树链剖分+fhq treap) 题面 给出一棵树,支持三种操作 1. ADD:路径加 2. QUERY:路径求和 3. SHIFT:树上路径整体循环移动一位(如:原路径上的权值依次是:1,4,5,3,操作完后变成:3,1,4,5) 分析 考验数据结构功底和代码
阅读全文
摘要:动态DP学习笔记 约定: 若无特别说明,数组下标从1开始. 若无特别说明,矩阵的下标从0开始(这是为了和代码一致,而代码这样实现是为了节省内存) 在公式中,矩阵用粗斜体表示,如 若无特别说明,对于有根树上的结点,表示它儿子的集合,表示它的重儿子 对
阅读全文
摘要:[BZOJ3879]SvT(后缀树+虚树) 题面 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始位置来表示),求这些后缀两两之间的LCP的长度之和.一对后缀之间的LCP长度仅统计一遍. 分析 建出S的后缀树
阅读全文
摘要:[GDOI2017] 取石子游戏(LCA) 题面 给出一棵树,每个点都有一个权值。对于每个节点,求去掉该节点的子树后,剩下所有节点的权值MEX(最小的没有出现的非负整数。) 分析 用权值线段树合并乱搞显然是可行的,但细节很多且需要卡常。 我们考虑所有权值为的节点对答案的影响。求所有节点的LCA
阅读全文
摘要:[SPOJ2666][ZJOI2007]捉迷藏Query on a tree IV(树链剖分)(论文做法) 题面 实际上,捉迷藏是Query on a tree IV的简化版。但区别只是捉迷藏的边权全部为1.这里把两个题合并起来写。 给定一棵包含 N 个结点的树,每个节点要么是黑色(亮灯),要么是白
阅读全文
摘要:[BZOJ 3145]Str(SAM+启发式合并) 题面 Arcueid得知了两者的DNA片段,想寻求一个DNA片段,使得其在两者的DNA中都出现过。我们知道公主的脑袋有点不太灵活,如果两个DNA片段只有一个位置不同,她也会将其认为是相同的。所以请您找出这样的最长的DNA片段吧。 分析 考虑两个串中
阅读全文
摘要:[Codeforces 603E]Pastoral Oddities(LCT) 题面 图中有n个孤立点,依次向图中加入m条带权无向边。使得图中每个点的度数均为奇数的边集是合法的,其权值定义为集合中的最大边权。每次加入边后,询问权值最小的合法边集的权值,不存在合法边集时输出−1。 $n \leq 10
阅读全文
摘要:[Codeforces 208E] Blood Cousins(dsu on tree+倍增) 题面 给出一个有根树森林,点集总大小为。有个询问,每个询问包含两个数,询问的级祖先的子树内有多少和深度相同 分析 先把询问离线。 相同深度点的个
阅读全文
摘要:[GXOI/GZOI2019]旧词 (树链剖分) 题面 给定一棵 个点的有根树,节点标号 ,1号节点为根。 给定常数 给定个询问,每次询问给定,求:\(\sum_{i=1}^x \mathrm{deep}_{\mathrm{lca}(i,y)}^k \m
阅读全文
摘要:[BZOJ 2959] 长跑(LCT+并查集) 题面 为了让同学们更好地监督自己,学校推行了刷卡机制。 学校中有n个地点,用1到n的整数表示,每个地点设有若干个刷卡机。 有以下三类事件: 1、修建了一条连接A地点和B地点的跑道。 2、A点的刷卡机台数变为了B。 3、进行了一次长跑。问一个同学从A出发
阅读全文
摘要:[BZOJ2594] [WC2006]水管局长(Kruskal+LCT) 题面 SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一条从A至B的水管的路径,接着通过信息化的控制
阅读全文
摘要:[BZOJ 2002] [HNOI2010]弹飞绵羊(Link Cut Tree) 题面 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第
阅读全文
摘要:[BJOI2014]大融合(Link Cut Tree) 题面 给出一棵树,动态加边,动态查询通过每条边的简单路径数量。 分析 通过每条边的简单路径数量显然等于边两侧节点x,y子树大小的乘积。 我们知道裸的LCT只能维护链的信息,那么怎么维护子树大小呢?我们只需要对于节点x维护x的所有虚儿子的子树大
阅读全文
摘要:[BZOJ1576] [BZOJ3694] [USACO2009Jan] 安全路径(最短路径+树链剖分) 题面 BZOJ1576和BZOJ3694几乎一模一样,只是BZOJ3694直接给出了最短路树 给出一个n个点m条边的无向图,n个点的编号从1~n,定义源点为1。定义最短路树如下:从源点1经过边集
阅读全文
摘要:[BZOJ3451]Normal(点分治+FFT) 题面 给你一棵 n个点的树,对这棵树进行随机点分治,每次随机一个点作为分治中心。定义消耗时间为每层分治的子树大小之和,求消耗时间的期望。 分析 根据期望的线性性,答案是$\sum_{i=1}^n(i的期望子树大小)=\sum_{i=1}^n \su
阅读全文
摘要:[BZOJ3133] [Baltic2013]ballmachine(树上倍增+堆) 题面 有一个装球机器,构造可以看作是一棵树。有下面两种操作: 从根放入一个球,只要下方有空位,球会沿着树滚下。如果同时有多个点可以走,那么会选择编号最小的节点所在路径的方向。比如依次在树根 放2个球,第一个球会落到
阅读全文
摘要:[BZOJ 3123] [SDOI 2013]森林(可持久化线段树+启发式合并) 题面 给出一个n个节点m条边的森林,每个节点都有一个权值。有两种操作: 1. Q x y k查询点x到点y路径上所有的权值中,第k小的权值是多少。此操作保证点x和点y连通,同时这两个节点的路径上至少有k个点。 2. L
阅读全文