随笔分类 -  树上问题

摘要:bzoj1602[Usaco2008 Oct]牧场行走 题意: n点树(有边权),q个询问求两个点之间的最短距离。n,q≤1000。 题解: 倍增求lca。 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 # 阅读全文
posted @ 2016-09-16 15:56 YuanZiming 阅读(186) 评论(0) 推荐(0)
摘要:bzoj4390[Usaco2015 dec]Max Flow 题意: 给定一棵有N个点的树,所有节点的权值都为0。有K次操作,每次指定两个点s,t,将s到t路径上所有点的权值都加一。请输出K次操作完毕后权值最大的那个点的权值。n≤50000,k≤100000。 题解: 先链剖把树变为链。然后用数组 阅读全文
posted @ 2016-09-16 11:08 YuanZiming 阅读(221) 评论(0) 推荐(0)
摘要:bzoj3631[JLOI2014]松鼠的新家 题意: 给个n点树,再给个节点的游览顺序,每经过一个节点(包括上一个游览的点到下一个游览的点路径上的点)就可以从这个节点拿走一个糖,问所有节点一开始要放几个糖。最后到达的节点不用糖。n≤300000 题解: 链剖将树链排成一列,然后用数组区间加的方式( 阅读全文
posted @ 2016-08-16 22:57 YuanZiming 阅读(419) 评论(0) 推荐(0)
摘要:bzoj2049[Sdoi2008]Cave 洞穴勘测 题意: 一些点,三种操作:点与点连边、点与点分离、询问两个点是否连通。 题解: 比上面那道还弱的LCT,只要注意记得翻转就行。 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <a 阅读全文
posted @ 2016-07-25 14:16 YuanZiming 阅读(163) 评论(0) 推荐(0)
摘要:bzoj2843极地旅行社 题意: 一些点,每个点有一个权值。有三种操作:点与点连边,单点修改权值,求两点之间路径上点的权值和(需要判输入是否合法) 题解: 以前一直想不通为什么神犇们的模板中LCT在link和cut后都要在根节点打翻转标记。现在明白了,因为只有这样才能保持深度的正确性,以前没有因此 阅读全文
posted @ 2016-07-25 14:00 YuanZiming 阅读(299) 评论(0) 推荐(0)
摘要:bzoj2243[SDOI2011]染色 题意: n点无根树,2类操作:将节点a到节点b路径上所有点都染成颜色c、询问节点a到节点b路径上的颜色段数量。 题解: 有点恶心的链剖,可以用包含区间颜色段数,左端点颜色,右端点颜色的结构体存储查询的结果。首先是线段树节点除了要保存区间颜色段数还要保存左右端 阅读全文
posted @ 2016-07-20 20:25 YuanZiming 阅读(159) 评论(0) 推荐(0)
摘要:bzoj4034[HAOI2015]T2 题意: N点树,以点 1 为根,且树点有边权。三种操作:把某个节点点权增加 a 、某个节点为根的子树中所有点的点权都增加 a 、询问某个节点到根的路径中所有点的点权和。 题解: 本题链剖可过。第二个操作只要每次在构造链的时候找到子树中在链中位置最大的节点,然 阅读全文
posted @ 2016-07-20 20:15 YuanZiming 阅读(263) 评论(0) 推荐(0)
摘要:bzoj1787[Ahoi2008]Meet 紧急集合 bzoj1832[AHOI2008]聚会 题意: 给个树,每次给三个点,求与这三个点距离最小的点。 题解: 倍增求出两两之间的LCA后,比较容易理解的做法是挑出两个LCA再做一次LCA,比较所有挑法。但画kan出ti图jie可知其中有两个LCA 阅读全文
posted @ 2016-07-20 19:45 YuanZiming 阅读(229) 评论(0) 推荐(0)
摘要:bzoj2157旅游 题意: 给定有权树,支持单边权修改,路径边权取相反数,路径边权求和,路径边权求最大最小值。 题解: 用link-cut tree link-cut tree与树链剖分有些类似,都是用某种数据结构维护树链。但也有很大差异:树链剖分是依据子树节点数确定轻重边,一经确定,不能更改,所 阅读全文
posted @ 2015-12-15 22:01 YuanZiming 阅读(290) 评论(0) 推荐(0)
摘要:bzoj1468 Tree 题意: 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K 题解: 点分治:先建树,然后分两步 1、计算当前点所在子树中符合条件的点对 2、在当前点的子树中选一个点作为根节点,递归这些根结点 如何求当前点所在子树中符合条件的点对数呢? 先通过d 阅读全文
posted @ 2015-12-10 21:52 YuanZiming 阅读(423) 评论(0) 推荐(0)