树链剖分
Dan__ge
Today is difficult,tomorrow is more difficult,but the day after is beautiful.
展开
-
HDU 3966 树链剖分
点击打开链接题意:给一个树,三个操作,一个询问点的权值,一个将u到v路径上的点的权值增加,一个是减少思路:还是比较裸的模版题,线段树改为区间更新就好了#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include using原创 2016-07-10 16:15:19 · 1459 阅读 · 0 评论 -
HYSBZ 1036 树链剖分
点击打开链接题意:中文思路:和最简单的HDU 3966 一样,我们只需要用线段树维护两个值就行了,一个最大值一个和,然后注意一下的就是有的题目是点权有的题目是边权#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include原创 2016-07-11 11:15:02 · 1120 阅读 · 0 评论 -
POJ 2763 树链剖分
点击打开链接题意:给一个树,然后树上的边的边权,然后两个操作,一个是询问u到v的路上权值和,一个是将第几条边的权值修改思路:与SPOJ 375 的那道题目很像,都是边上的权值,然后维护一个线段树进行修改和求和就行了#include #include #include #include #include #include using namespace std;typedef原创 2016-07-11 14:14:57 · 1472 阅读 · 0 评论 -
POJ 3237 树链剖分
点击打开链接题意:给一个树,三种操作,一个是将第I条边的权值改变,一个是将u到v的所有边的权值取反,一个是询问u到v的路径中边的最大值思路:和模版的树链剖分没什么区别,这题唯一的坑点就是线段树的懒惰标记,只要有更新操作或者查询操作就都要pushdown(),然后改权值的比较简单,单点更新,而区间取反我们可以用两个数组直接模拟,一个最大值的,一个区间最小值的,然后一旦取反了,就将最大值改为负原创 2016-07-11 16:17:35 · 1209 阅读 · 0 评论 -
HYSBZ 2243 树链剖分
点击打开链接题意:中文思路:一看就是应该用树链剖分与线段树的结束,主要是结合什么呢,因为需要连续的一段一段的,所以我们肯定是要用区间合并,那么区间合并需要用到什么呢,就是整个区间的最左端和最右端的元素及这个区间已经形成的段数,那么我们合并的时候就要判断一下左儿子的最右端与右儿子的最左端是不是相同,然后在处理,而更新就用个懒惰标记就可以完成了,而查询一段是与正常的区间合并是一样的,但是因为是原创 2016-07-11 21:04:23 · 1455 阅读 · 0 评论 -
FZU 2082 树链剖分
点击打开链接题意:中文思路:最基础的树链剖分,区间求和以及单点更新,结果要用long long 就没什么了#include #include #include #include #include #include using namespace std;typedef long long ll;typedef unsigned long long ull;const in原创 2016-07-12 10:52:01 · 1165 阅读 · 0 评论 -
LIGHTOJ 1348 树链剖分
点击打开链接题意:给一个树和树上点的权值,两个操作,一个是将点的权值修改,一个是询问u到v的点权和思路:模版题,kuangbin开的这套题为什么这么模版的写的人这么少,可能大神们不屑于写这种题吧(弱哭)#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include原创 2016-07-12 11:18:05 · 1107 阅读 · 0 评论 -
SPOJ 375 树链剖分
点击打开链接题意:给个树和树上的权值,两个操作,Q u v,问u到v的边上的最大权值,C u v,将第u条边的权值改为v思路:今天学了学树链剖分,这题是个检验模版的题目,理论我是解释不清楚的,自己在九野聚聚那学来的一份模版#include #include #include #include #include #include using namespace std;type原创 2016-07-08 20:25:08 · 1514 阅读 · 0 评论 -
HDU 5029 树链剖分
点击打开链接题意:给一个树,然后操作是将颜色z涂在u到v路径上的所有点,最后问你每一个点上哪个颜色涂的最多,若有多组解,输出颜色较小的那个思路:因为是在树上的更新操作,所以需要用树链剖分来将树形的结构简化成线性的结构,从而使用线段树来更新,然后用类似离线的方法,现在规定对于U到V的路径上,它投影到线性结构的起点和终点是S和T,那么对于z来说它可以作用的范围就是S到T,此时我们维护的线段树的原创 2016-08-08 20:14:49 · 446 阅读 · 0 评论