ACM_Heavy_Light_Decomposition
文章平均质量分 81
Gatevin
这个作者很懒,什么都没留下…
展开
-
POJ 2763 Housewife Wind 树链剖分
题目大意:就是给出一棵树然后p次操作, 每次操作询问从当前位置到某个位置的路径的权值和, 另外一个操作是修改某条边的权值大致思路:树链剖分第二题...因为写线段树的在建树的时候没有pushUp调试了一个小时才发现....感觉自己智商好捉急.....不过因为这个原因对于树链剖分的过程更熟悉了...首先在处理边的时候, 我们先将边上的信息转移到点上, 这里我们将所有的边原创 2015-09-07 23:40:16 · 321 阅读 · 0 评论 -
BZOJ 1036 树的统计Count 树链剖分
题目大意:给出一棵树, 3种操作1.询问u到v路径上的最大点权2.询问u到v路径上的点权和3.修改i点权值为w大致思路:树链剖分练习题第5道...很水树链剖分之后用线段树维护区间最大值和区间和即可, 单点修改区间查询代码如下:Result : Accepted Memory : 4356 KB Time : 2468原创 2015-09-08 16:28:28 · 517 阅读 · 0 评论 -
Light OJ 1348 Aladdin and the Return Journey 树链剖分水题
题目大意:就是现在给出一个树, 有点权, 两种操作, 第一种修改某个点的点权第二种询问某两点之间的路径上的点权和大致思路:树链剖分水题....熟练剖分之后用线段树维护查询, 单点更新区间查询代码如下:Result : Accepted Memory : 4312 KB Time : 1004 ms/* * Author:原创 2015-09-08 19:30:29 · 536 阅读 · 0 评论 -
BZOJ 2243 染色 树链剖分
题目大意:就是现在给出一棵树, 两种操作1.将u到v路径上的所有点的颜色更改为c2.询问u到v路径上的点的颜色按经过顺序写成一排之后, 连续相同的数的段数大致思路:树链剖分练习第4题没有什么难度...就是用线段树维护区间中不同连续颜色数量的时候, 记录当前区间最左边和最右边的颜色然后进行合并的时候怕暖两个区间将要合并的边界颜色是否一样就行因为我使用的树链剖分模板原创 2015-09-08 15:39:17 · 436 阅读 · 0 评论 -
HDU 3966 Aragorn's Story 树链剖分
题目大意:就是现在给出一棵树节点个数不超过50000, 每个节点初始有个权值接下来最多10万次操作, 每次操作对于节点u和v之间路径上的所有点的权值加上一个值或者减去一个值或者询问某个节点当前的权值是多少大致思路:学习树链剖分的第一个题目....首先将树剖分之后映射到线段树维护的区间中, 然后就是区间修改单点查询的线段树问题了代码如下:Result原创 2015-09-07 15:58:55 · 444 阅读 · 0 评论 -
HDU 5221 Occupation dfs序版树链剖分
题目大意:就是现在给出一棵树, 以1为根, 树上的点都有自己的权值, 初始都没有被占领, 接下来3种操作1. 从u到v的路径上的所有点被M占领2. 某个点u被C占领3. 以u为根的子树被M占领每次操作后输出当前被M占领的那些点的点权和大致思路:很明显对于操作1和2用树链剖分很容易处理对于第3种操作, 需要利用树的时间戳...于是这里写了一次dfs版的树链剖分原创 2015-09-11 00:18:50 · 468 阅读 · 0 评论 -
SPOJ 375 QTREE Query on a tree 树链剖分水题
题目大意:给定一棵树后两种操作修改边权, 询问两点间路径上的边权的最大值大致思路:树链剖分水题剖分之后线段树维护最大值即可, 单点更新区间查询代码如下:Result : Accepted Memory : 4403 KB Time : 490 ms/* * Author: Gatevin * Created Time:原创 2015-09-08 20:02:06 · 422 阅读 · 0 评论 -
FZU 2082 过路费 树链剖分水题
题目大意:就是现在有一棵树, 每条边都有自己的边权, 然后接下来会询问两点间路径的边权和, 或者修改某条边的权值大致思路:树链剖分水题= =剖分之后线段树维护即可代码如下:Result : Accepted Memory : 5952 KB Time : 184 ms/* * Author: Gatevin * Creat原创 2015-09-08 18:49:27 · 599 阅读 · 0 评论 -
POJ 3237 Tree 树链剖分
题目大意:就是现在给出一棵树, 有边权值, 有3种操作1.询问从点a到b的路径上边权的最大值2.将a到b路径上的所有边的边权值取反3 将第i条边的权值更改为w大致思路:就是很明显的树链剖分的题, 第三道树链剖分的练习题树链剖分之后用线段树维护的时候记录当前区间的最小值和最大值然后利用懒惰标记即可代码如下:Result : Accepted原创 2015-09-08 10:51:21 · 391 阅读 · 0 评论 -
Codeforces Gym 100814C Connecting Graph (并查集, 树链剖分)
题目大意:就是现在初始的时候有一个只有n个点的图(n 每次操作要么添加一条无向边, 要么询问之前结点u和v最早在哪一次操作的时候连通了大致思路:这个题表示只想到了O(m*logn*logn)的做法....首先用并查集维护连通性当添加边的时候,如果两个点在不同连通块,就选取其连通块的代表结点连一条边, 权值为该操作的编号, 否则不作操作.那么在n次操作之后, 会得原创 2015-11-21 20:28:30 · 1248 阅读 · 0 评论