树链剖分
_pkm_
love coding
展开
-
树链剖分 spoj 375 Query on a tree(剖分入门)
题目链接树链剖分学习#include<bits/stdc++.h>using namespace std;#define LL long long #define cl(a,b) memset(a,b,sizeof(a)) #define pb push_back #define gcd __gcdconst int maxn = 100010; const LL inf =1LL<<50; co原创 2016-05-05 14:42:20 · 352 阅读 · 0 评论 -
HDU 3966 Aragorn's Story(树链剖分 点权,树状数组)
题目链接 题意:给出一棵树,每次把路径(u,v)上的点权都加上或者减去一个值,然后问某一点的值。 树链剖分,后面可以使用线段树,也可以使用树状数组。使用树状数组的话,因为是点权,要移到边权上,所以pos初始为1。树状数组,使用了区间的更新,单点查询。 具体的过程是初始化 add(i,x),add(i+1,-x) 这样sum(x)就是x点的值了。而不会是x的前缀和了//#include<bits原创 2016-10-26 18:35:09 · 321 阅读 · 0 评论 -
BZOJ 1036: [ZJOI2008]树的统计Count(树链剖分 点权)
题目链接 题意:给出一个树,告诉每个点的权值,然后有修改操作,还有询问(u,v)路径上的最大值,(u,v)路径的和树链剖分啦,一般分为点权和边权,剖分部分不变,只是用其他数据结构处理的时候注意一下,点权可以可以转换为该点与父边的权值,就变为了边权,这样就相于给根节点来了一个虚拟的父亲(代码中不用体现),对于剖分的学习,动手自己剖分一遍,就明白了,第二个dfs就是把重边连城链,其实就是给边编号,使得原创 2016-10-26 16:17:10 · 295 阅读 · 0 评论