随笔分类 -  树形数据结构—树链剖分

摘要:题意 "题目链接" Sol 首先对询问差分一下,我们就只需要统计$u, v, lca(u, v), fa[lca(u, v)]$到根的路径的贡献。 再把每个点与$k$的lca的距离差分一下,则只需要统计每个点与$k$的lca深度。这个东西等价于所有的链与$k$到根的链的并。 树剖+主席树维护一下。这 阅读全文
posted @ 2019-03-29 08:49 自为风月马前卒 阅读(372) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 下面的代码是$O(nlog^3n)$的暴力。 因为从一个点向上只会跳$logn$次,所以可以暴力的把未经过的处理出来然后每个点开个multiset维护最大值 cpp include define Pair pair define MP(x, y) make_pair(x, 阅读全文
posted @ 2019-03-04 20:21 自为风月马前卒 阅读(373) 评论(0) 推荐(0)
摘要:题意 "题目链接" Sol 树链剖分板子 + 动态开节点线段树板子 cpp include define Pair pair define MP(x, y) make_pair(x, y) define fi first define se second // define int long lon 阅读全文
posted @ 2019-01-30 17:30 自为风月马前卒 阅读(328) 评论(0) 推荐(0)
摘要:题意 $n$个节点的树,每个点有权值,支持三种操作 1、 换根 2、把$x$到$y$路径上节点权值变为$z$ 3、询问路径最小值 Sol 啥?你说这是TopTree的裸题?那你写去啊 很显然,如果没有第一个操作就是树剖的裸题 其实有了第一个操作也是树剖的裸题 我们考虑换根之后会对那些节点产生影响 以 阅读全文
posted @ 2018-07-25 11:18 自为风月马前卒 阅读(343) 评论(0) 推荐(2)
摘要:题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。Debian/Ubuntu使用的apt-get,F 阅读全文
posted @ 2018-07-06 17:16 自为风月马前卒 阅读(258) 评论(0) 推荐(0)
摘要:Description 给一个N个点M条边的连通无向图,满足每条边最多属于一个环,有Q组询问,每次询问两点之间的最短路径。 给一个N个点M条边的连通无向图,满足每条边最多属于一个环,有Q组询问,每次询问两点之间的最短路径。 Input 输入的第一行包含三个整数,分别表示N和M和Q 下接M行,每行三个 阅读全文
posted @ 2018-06-13 18:30 自为风月马前卒 阅读(333) 评论(0) 推荐(1)
摘要:Description 公元 2044 年,人类进入了宇宙纪元。L 国有 n 个星球,还有 n?1 条双向航道,每条航道建立在两个星球之间, 这 n?1 条航道连通了 L 国的所有星球。小 P 掌管一家物流公司, 该公司有很多个运输计划,每个运输计划形如 :有一艘物流飞船需要从 ui 号星球沿最快的 阅读全文
posted @ 2018-05-27 17:59 自为风月马前卒 阅读(344) 评论(0) 推荐(1)
摘要:题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 输入输出格式 输入格式: 第一行两个整数N,M。 第二行有N个整数,其中第i个整数 阅读全文
posted @ 2018-02-10 19:12 自为风月马前卒 阅读(383) 评论(2) 推荐(0)
摘要:题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入输出格式 输入格式: 第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来N-1行每行包含两个正整数x、y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树)。 接下来M行 阅读全文
posted @ 2017-12-24 09:15 自为风月马前卒 阅读(860) 评论(3) 推荐(3)
摘要:题目描述 Farmer John has N barren pastures (2 <= N <= 100,000) connected by N-1 bidirectional roads, such that there is exactly one path between any two p 阅读全文
posted @ 2017-12-23 21:06 自为风月马前卒 阅读(673) 评论(0) 推荐(0)
摘要:题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 输入输出格式 输入格式: 第一行包 阅读全文
posted @ 2017-12-23 20:11 自为风月马前卒 阅读(540) 评论(0) 推荐(2)
摘要:题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有节点的值之和 操作3: 格式: 3 x z 表示将 阅读全文
posted @ 2017-12-23 11:20 自为风月马前卒 阅读(292) 评论(1) 推荐(0)
摘要:题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径 阅读全文
posted @ 2017-07-12 19:04 自为风月马前卒 阅读(567) 评论(2) 推荐(0)

Contact with me