码迷,mamicode.com
首页 >  
搜索关键字:树链剖分    ( 1272个结果
bzoj 2243 染色(树链剖分)
题外话首先这是个挺裸的题,由于太久没写剖分导致调了好久,前天调了一下午,一直查不到错昨晚在看春晚的时候突然灵机一动,发现合并的时候出了问题,开电脑把它A掉了= =感觉自己也蛮拼的Description给定一棵有n个节点的无根树和m个操作,操作有2类:给定一棵有n个节点的无根树和m个操作,操作有2类:1:将节点a到节点b路径上所有点都染成颜色c1:将节点a到节点b路径上所有点都染成颜色c2:询问节点a...
分类:其他好文   时间:2015-02-19 16:21:25    阅读次数:282
bzoj1036 count 树链剖分或LCT
这道题很久以前用树链剖分写的,最近在学LCT ,就用LCT再写了一遍,也有一些收获。因为这道题点权可以是负数,所以在update时就要注意一下,因为平时我的0节点表示空,它的点权为0,这样可以处理点权为非负求最大值和求和的情况(即不用特判某个点是否有左右儿子,直接更新就行了),但这道题就不行(求和要...
分类:其他好文   时间:2015-02-14 21:19:25    阅读次数:187
spoj 375 query on a tree LCT
这道题是树链剖分的裸题,正在学LCT,用LCT写了,发现LCT代码比树链剖分还短点(但我的LCT跑极限数据用的时间大概是kuangbin大神的树链剖分的1.6倍,所以在spoj上是850ms卡过的)。收获: 1、边转换成点(即若存在边(u,v),则新加一个点z代表边,将z连接u和v,z的点权就是(....
分类:其他好文   时间:2015-02-13 21:11:22    阅读次数:291
树链剖分学习笔记
让我们先来看如下一个问题: 给定一棵n个节点的树,有如下两种操作: 1.修改树上一条边权值为v 2.查询树上两个节点间路径的距离 对于这个问题我们要怎么做? 暴力?妥妥的超时。 这样我们就引入了树链剖分的算法。 在上述题目中,虽然树的边权发生了改变,但是树的形态是没有发生任何变化的。因此我们可以将树上的链取下来存入数据结构中(线段树平衡树均可)利用这些数据结构的优越性能来实现权值的修改...
分类:其他好文   时间:2015-02-13 13:24:20    阅读次数:181
树链剖分学习笔记
先让我们看一个题目 有一棵n个节点的树,树的每条边有个边权,有如下两种操作 1.修改一条边的边权 2.查询两点之间路径的权值 对于这种题目,可能有人会选择直接暴力,这很明显不行。 换一种思路,如果我们把树的每一条边拆下来,对他们进行编号,然后使用线段树来存储呢?使用线段树来对每条边的边权进行修改和查询是很方便的。于是这样我们就引出了树链剖分。 树链剖分其实就是把一棵树上的各个边拆开来进行...
分类:其他好文   时间:2015-02-12 00:50:00    阅读次数:506
POJ 2763 Housewife Wind (树链剖分+线段树)
题目链接:POJ 2763 Housewife Wind 题意:抽象出来就是 一棵已知节点之间的边权,两个操作,1·修改边权,2·询问两个节点之间的边权和。 AC代码: #include #include #include using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<...
分类:Windows程序   时间:2015-02-06 09:33:17    阅读次数:248
BZOJ 2836 魔法树 树链剖分
题目大意:维护一棵有根树,每个节点初始权值为0,支持下列操作: 1.链上+ 2.子树求和 。。。。。链剖裸题- - 果然链剖这种东西想要1A实在是不咋现实- - #include #include #include #include #define M 100100 using namespace std; struct Segtree{ Segtree *ls,*rs; l...
分类:其他好文   时间:2015-02-04 14:49:21    阅读次数:143
【BZOJ 1576】 [Usaco2009 Jan]安全路经Travel
最短路径树+并查集/树链剖分~ 详细题解~...
分类:其他好文   时间:2015-02-04 09:28:37    阅读次数:242
【BZOJ 2819】 Nim
树链剖分~...
分类:其他好文   时间:2015-02-04 09:26:24    阅读次数:196
树链剖分模版
#include #include #include using namespace std; const int maxn = 10010; struct edge { int v, next; }e[maxn*2]; int first[maxn], cnt; int top[maxn], dep[maxn], sz[maxn], f[maxn], son[maxn], rank[m...
分类:其他好文   时间:2015-02-02 14:10:08    阅读次数:107
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!