树链剖分
克莉丝汀娜
此时一名自称平民的玩家路过
展开
-
spoj 375 Query on a tree
题目传送门题目大意:给一个n个结点的树以及它的n-1条边,两个操作:1、更改其中的边权。2、询问结点a到b的路径中最大的边权值 #include#include#includeusing namespace std;#define maxn 10005#define lson i<<1,l,m#define rson i<<1|1,m+1,rstruct Edge{原创 2015-03-15 20:14:21 · 290 阅读 · 0 评论 -
poj 3237 tree
题意:一棵树n个节点,三种操作:1、改变一条边的权值。2、查询节点a到b的路径中的边的最大值。3、将a到b路径上所有边的权值变为其相反数。 第4道树链剖分。。剖分后,用线段树点更新实现操作1,即可,对于操作3,设区间内原最大值、最小值为a、b,则区间内的数都乘以-1之后,最大值、最小值变为:-b,-a。这里用线段树成段更新操作即可。注意的是使用lazy标记的时候,应当使用异或运算,否则原创 2015-03-25 14:57:52 · 316 阅读 · 0 评论 -
hdu 3966 Aragorn's Story
树链剖分的入门题。题目大意:n个结点的树,每个结点有一个值。两种操作:1、将结点a-b路径上的结点值都加上或减去一个值。 2、询问结点a的值。 建树之后,将树状数组初始化为0,假设每个结点的值也都为0。然后进行更新。设结点i建树之后的序号为id[i],初始值为A[i],则在id[i]位置增加A[i],在id[i]+1的位置减少A[i],这样在询问结点的值时,只需用树状数组的求一下前原创 2015-03-17 21:49:03 · 440 阅读 · 0 评论 -
POJ 2763 Housewife Wind
n个结点的树,两种操作:更新一条边的权值,询问两点间的路径的权值和。典型的树链剖分。用线段树写了,不知道为嘛TLE。先贴在这儿,待以后研究。#include #include #include #include using namespace std;#define maxn 100050#define lson i<<1,l,m#define rson i<<1|1,m原创 2015-03-21 10:41:58 · 459 阅读 · 0 评论