树链剖分
dan__zh
qq:1244536605
看我的博客有任何地方没看懂的可以加我qq,我会仔细解答~~~
展开
-
洛谷P3384 【模板】树链剖分 树剖+线段树
洛谷P3384 【模板】树链剖分标签树链剖分简明题意树剖的模板题。给出一棵有根树,需要你支持四种操作修改:让树上u、v这条路径的所有节点都增加c查询:查询树上u、v这天路径的权值之和修改:让树上u的子树(包含u)全部增加c查询:查询子树u(包含u)的权值之和思路模板题,思路略,仅提供几点注意事项注意事项搞清楚两次dfs得到的数组的含义在路径查...原创 2019-07-09 16:53:08 · 117 阅读 · 1 评论 -
洛谷P3833 [SHOI2012]魔法树 树剖+线段树
洛谷P3833 [SHOI2012]魔法树标签树剖线段树简明题意太水了,不说了,注意别溢出了就行了思路无注意事项无总结无AC代码#include<cstdio>#include<vector>#include<algorithm>using namespace std;const int ma...原创 2019-07-15 16:48:02 · 133 阅读 · 0 评论 -
洛谷P2680 运输计划 树剖+差分+二分+边权化点权
洛谷P2680 运输计划标签树链剖分二分边权化点权简明题意给一棵树,给边权,再给m条路径。你可以将一条边权置为0,使得m条路径中最短最长的路径最短。思路最短的路径最长,妥妥的二分…然而我一开始太浮躁,连题目都没看清楚,以为他问的是使得m点路径的权值和最小…树上的边权不好处理,可以把边权转化成点权。转化后,如果查u-v,就是ask(u, v) - LCA(u, v...原创 2019-07-11 13:25:23 · 119 阅读 · 0 评论 -
洛谷P3038 [USACO11DEC]牧草种植Grass Planting 树剖+边权化点权+线段树
洛谷P3038 [USACO11DEC]牧草种植Grass Planting标签树链剖分边权化点权线段树简明题意给树,支持两种操作:u–v路径所有的边权+1查询u–v的边权和思路边权化点权,化完剖,剖完线段树维护,有点水注意事项就是注意LCA处的处理总结无AC代码#include<cstdio>#include&...原创 2019-07-15 19:16:09 · 128 阅读 · 0 评论 -
P2590 [ZJOI2008]树的统计 树剖+线段树
P2590 [ZJOI2008]树的统计标签树链剖分线段树简明题意啊啊啊,太简单了不讲了,3分钟水过啊啊啊啊思路无注意事项不要写反了啊啊啊,我把dfs1中siz[u] += siz[v]写成了siz[v]+=siz[u],然后T了两个点…我初步分析,觉得,是因为链的划分是由子树决定的,这样后,链的划分就不合理,复杂度就高了…总结无AC代码...原创 2019-07-11 21:25:06 · 78 阅读 · 0 评论 -
洛谷P4116 Qtree3 树剖+线段树
洛谷P4116 Qtree3标签树剖线段树简明题意给一棵树,每个节点有黑色或者白色两种颜色。需要支持2种操作修改:将某个节点的颜色取反(黑色变成白色,白色变黑色)查询:对于给定的u,查询1–u路径上的第一个黑点是谁思路树剖,剖完用线段树取维护区间的最小深度对应的原始编号就行了注意事项注意线段树的操作是对新编号,所以传参要注意总结无...原创 2019-07-16 12:57:59 · 122 阅读 · 0 评论 -
洛谷P4315 月下“毛景树” 树剖 +边权化点权+线段树+多重trag
洛谷P4315 月下“毛景树”标签树剖边权化点权线段树多重rag简明题意给一棵树及边权,需要支持4种操作:将第i条边权改为wu–v路径边权全部改为wu–v路径边权全部增加w查询u–v路径的最大边权思路首先边权化点权不必说了。难点在于区间操作有两种,一个是区间覆盖, 一个是区间增加。这里我的处理方法是给每个节点写两个tag,一个记录覆盖,一个记录增...原创 2019-07-16 14:05:34 · 98 阅读 · 0 评论 -
洛谷P2146 [NOI2015]软件包管理器 树剖+线段树+区间覆盖
洛谷P2146 [NOI2015]软件包管理器标签树链剖分线段树区间覆盖简明题意给一棵树,支持两种操作询问树上1-u路径中点权为0的个数,并将他们改为1询问u的子树中点权为1的个数,并将它们改为0思路直接上树剖啊,太简单了。这里简单说一下线段树吧,既然是个区间操作,肯定来一个带tag的线段树,然后我们发现,这个tag是覆盖型的,所以下传标记时直接覆盖原标...原创 2019-07-12 10:53:06 · 137 阅读 · 0 评论 -
洛谷P4281 [AHOI2008]紧急集合 / 聚会 树剖+LCA
洛谷P4281 [AHOI2008]紧急集合 / 聚会标签树链剖分LCA简明题意给一棵树,有多组询问,每组询问会给你3个点,让你求树上某一点x,使得x到所给三个点的距离总和最短思路容易发现,3个点相互之间的LCA中,取深度最深的那个,就是要集结的点,从这一点出发到三个点的距离之和最短注意事项求树上两点u、v的距离时,如果用深度求,需要分类讨论,讨论他们是否...原创 2019-07-12 14:35:03 · 207 阅读 · 0 评论 -
洛谷P4374 [USACO18OPEN]Disruption 树剖+极值线段树
洛谷P4374 [USACO18OPEN]Disruption标签树剖极值线段树简明题意给一棵树,再给m条带权的边,去掉一条原树的边,树便不连通,这时需要从新给的m条边中选一条使得树仍然联通,问对于每一条原树边,所需要的最小权思路原本是一棵树,去掉任意一条边,会使得树分为两部分,而连上任意一条非树上的边,则会形成一个环,而环上任意断开一条边,又成为一棵树。这就告诉我...原创 2019-07-15 15:49:49 · 120 阅读 · 0 评论 -
洛谷P3258 [JLOI2014]松鼠的新家 树剖+差分
洛谷P3258 [JLOI2014]松鼠的新家标签树链剖分简明题意太裸了思路太裸了,直接树剖,剖完用差分维护…太水了注意事项好吧其实也不那么水,要注意题目给的路径,在每个点处不要算重了,比如1,4,5,不是1-4,4-5,这样会把4算两次。。解决办法自己想想总结无AC代码#include<cstdio>#include<...原创 2019-07-10 22:15:44 · 113 阅读 · 0 评论 -
洛谷P4092 [HEOI2016/TJOI2016] 树剖+线段树
洛谷P4092 [HEOI2016/TJOI2016]树标签树链剖分简明题意给定一棵有根树,需要支持如下操作:给某个节点打表记查询一某个节点的离他最近的被标记的祖先(祖先包括自己)思路实际上我们可以去维护一条链中深度最深的且被标记的节点。当我们查询任意一个节点u时,我们只需要返回当前链中最深的节点对应的原始编号。然而线段树维护的是深度,我们只能查询到深度,那...原创 2019-07-09 19:33:14 · 164 阅读 · 0 评论 -
洛谷P4427 [BJOI2018]求和 树剖+50个前缀和
洛谷P4427 [BJOI2018]求和标签树链剖分简明题意给一棵有根树,节点的权值定义为节点的深度。只需要你支持一种查询操作查询树上u到v的点权k次方之 (1 <= k <= 50)思路果断树剖,去维护区间k次方和,显然要维护50个数据结构,维护不同的次方和。这里我太笨了我开了50棵线段树然后突然想到区间查和前缀和不就行了,然后换成50个前缀和,...原创 2019-07-09 21:21:05 · 187 阅读 · 1 评论 -
洛谷P3178 [HAOI2015]树上操作 树剖+线段树
洛谷P3178 [HAOI2015]树上操作标签树链剖分简明题意无思路裸的树剖,秒了啊啊啊啊啊!!!注意事项好吧,其实也没能一次过。总结下来,就是支持修改的数据结构,你得看他修改次数*修改范围会不会爆long long。然后,如果爆了long long,除了修改变量成long long,不要忘记返回值也要改成long long…总结如上AC代...原创 2019-07-09 22:19:00 · 119 阅读 · 0 评论 -
洛谷P3128 [USACO15DEC]最大流Max Flow 树剖+差分
洛谷P3128 [USACO15DEC]最大流Max Flow标签树链剖分简明题意给一棵树,再给m个操作,每个操作都是让你给u-v的路径上所有节点+1,最后问你最大的节点是多少思路太裸了,树剖,剖完后用差分维护下,最后还原成原数组找到最大值即可。太简单了注意事项无总结无AC代码#include<cstdio>#include&...原创 2019-07-10 13:22:15 · 122 阅读 · 0 评论 -
洛谷P3979 遥远的国度 树剖+线段树+换根
洛谷P3979 遥远的国度标签树链剖分简明题意给一棵有根树,支持3种操作:修改:把树的根改为id修改:把u-v路径上的权值改为v查询:查询当前根下,x的子树中的最小权值思路这里比较麻烦的是换根操作。具体怎么处理呢?注意事项总结AC代码双倍经验...原创 2019-07-10 21:07:32 · 235 阅读 · 2 评论 -
洛谷P4114 Qtree1 树剖+点权化边权+线段树
洛谷P4114 Qtree1标签树链剖分边权化点权简明题意给一颗树,给出边权,需要支持两种操作:修改:将第i条边权改为c查询:查询u-v的路径中权值最大值思路首先化边权为点权是必须的。然后修改操作:单点修改,直接改就行了查询操作:由于化边权为点权了,对于u-v的路径,我们直接去掉LCA(u,v)再查就是正确答案了。具体怎么去掉呢?直接在查询之前,...原创 2019-07-14 19:34:01 · 182 阅读 · 0 评论 -
洛谷P2420 让我们异或吧 树剖+边权化点权+前缀和
洛谷P2420 让我们异或吧标签树剖边权化点权前缀和简明题意给一棵树,给权。需要多次查询路径u-v的异或思路剖,既然没有修改操作,就不需要线段树了,剖完直接前缀和维护区间注意事项说给我自己听的:前缀和时,左端点应该-1,这个-1,不要写错地方了…总结无AC代码#include<cstdio>#include<vect...原创 2019-07-14 20:17:20 · 168 阅读 · 0 评论 -
洛谷P1505 [国家集训队]旅游 树剖+边权化点权+线段树
洛谷P1505 [国家集训队]旅游标签树链剖分边权化点权线段树简明题意给一棵树及边权,需要支持5种操作:修改:将第i条边权改为c修改:将u–v路径的所有边权全部取相反数查询:查询u–v路径中的边权和查询:查询u–v路径中边权最大值查询:查询u–v路径中边权最小值思路果断边权化点权,然后剖,剖完用tag线段树维护。于是就成了板子题,很简单了注意...原创 2019-07-15 11:23:34 · 148 阅读 · 0 评论 -
洛谷P2486 [SDOI2011]染色 树剖+线段树+区间染色
洛谷P2486 [SDOI2011]染色标签树剖线段树区间染色简明题意给一棵树,每个节点都拥有自己的颜色,需要你支持两种操作修改:将u–v路径上的所有节点的颜色改为c查询:查询u–v路径上有多少个颜色段思路树剖,剖完线段树维护颜色。修改change创造做很简单,改就完了,查询的操作稍微复杂点,就是比如树上的路径时这样的:1-2-3-4-10-11,查1–...原创 2019-07-12 15:48:46 · 181 阅读 · 0 评论