题目链接:http://codeforces.com/problemset/problem/343/D 题意:给定一棵n个n-1条边的树,起初所有节点权值为0,然后m个操作。 1 x:把x为根的子树的点的权值修改为1; 2 x:把x结点到根路径上的点修改为0; 3 x:查询结点x的值。 思路:树链剖 ...
分类:
其他好文 时间:
2017-03-04 18:53:05
阅读次数:
260
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2243 题意:中文题目 思路:树链剖分。首先考虑求区间颜色段数的问题, 我们可以用线段树维护:区间左右端点(st,ed),区间颜色段数(val),懒惰标记(lazy:是否整个区间被染成同一种颜 ...
分类:
其他好文 时间:
2017-03-04 12:45:10
阅读次数:
212
http://acm.split.hdu.edu.cn/showproblem.php?pid=5029 题意:n个点的树,m次操作。每次操作输入L,R,V,表示在[L,R]这个区间加上V这个数字。比如[1,2]加上1,[1,3]加上1,那么1这个点就是{1,1},2也是{1,1},3是{1}。全部 ...
分类:
其他好文 时间:
2017-03-03 20:38:28
阅读次数:
195
题意:给定一棵树,每次询问给出l r z,求在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和 题解: 显然,暴力求解的复杂度是无法承受的。 考虑这样的一种暴力,我们把 z 到根上的点全部打标记,对于 l 到 r 之间的点,向上搜索到第一个有标记的点求出它的深度统计答案。观察到,深度其实就是 ...
分类:
其他好文 时间:
2017-02-26 15:32:03
阅读次数:
176
题意:给定一个树,维护:1、u到v是否有必胜策略 2、将u的权值修改为w 题解:BFS版的树链剖分 #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> usi ...
分类:
其他好文 时间:
2017-02-26 15:22:10
阅读次数:
184
题意:给定一棵树,维护:1、将a到b路径上所有的点染为c 2、求a到b路径上颜色段的数量。 题解:区间颜色段数=左区间颜色段数+右区间颜色段数-(左区间最右边的颜色==右区间最左边的颜色),用线段树来维护。 #include <cstdio> #include <cstring> #include ...
分类:
其他好文 时间:
2017-02-26 14:03:15
阅读次数:
232
之前写了那么长一篇Blog…现在不如写篇小短文…说一下另一种树链剖分方法——长链剖分的事情。它可以比重链剖分更快地完成一些东西。 树链剖分的原始版本重链剖分非常经典,这里就不从头介绍了。 原本的剖分方法是按照子树大小剖分,与子树点数最多的儿子连成链,所以叫做重链剖分…然后显然就有一个点到根的路径上至 ...
分类:
其他好文 时间:
2017-02-15 22:13:10
阅读次数:
174
题意:https://vjudge.net/problem/SPOJ-QTREE 带修路径查询最大边权 sol :树链剖分,之后每条重链就是一个连续的区间,拿线段树维护即可 简单讲讲链剖吧.....就是把树边划分为轻重边,重边的定义是和siz最大的儿子之间的边 通过两次dfs实现,可以证明重链(重边 ...
分类:
其他好文 时间:
2017-02-15 00:42:41
阅读次数:
242
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4538 维护一个数据结构支持对于一颗树的操作,需要支持: 1.对于树上的一条路径上的每个点上放一个值。 2.撤销某次操作的路劲放。 3.查询除了经过这个点的路径的最大值。 往一个路径上丢值相当 ...
分类:
其他好文 时间:
2017-02-14 22:07:05
阅读次数:
195
【算法】树链剖分+线段树 【题解】线段树的区间加值和区间覆盖操作不能同时存在,只能存在一个。 修改:从根节点跑到目标区域路上的标记全部下传,打完标记再上传回根节点(有变动才需要上传)。 询问:访问到目标区域路上的标记全部下传。 我写的线段树版本是在打标记的同时便对该点的询问项(最大值)做了对应更改, ...
分类:
其他好文 时间:
2017-02-14 20:24:58
阅读次数:
183