数据结构_树链剖分
TouchDreamer
这个作者很懒,什么都没留下…
展开
-
SPOJ 375 Query on a tree(树链剖分)
题目分析 本题主要是修改树上线的cost值,还有询问2点之间的最大的cost.因为本题数据量大,并且修改和查询次数多,因此我们需要使用线段树进行操作。因此我们需要对树进行剖分,并将每个点对应的线段进行更新即可,根节点没有对应线段,因为n个节点的树只有n-1条边,因此统一将线段与连接2端的深度较大的点对应。至于树链剖分的理解有一个很不错的博客博客地址,多看看配合在草纸上画出对应图形就能正确理解了。原创 2016-07-28 13:15:36 · 302 阅读 · 0 评论 -
HDU 3966 Aragorn's Story
题目分析 树链剖分基础题。2种操作:第一种:询问节点C的敌人数。另一种为改变a到b的路径上所有节点的敌人数。#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int原创 2016-07-28 18:59:29 · 206 阅读 · 0 评论 -
POJ 2763 Housewife Wind
题目分析 题目很水,理解了很简单,就是套模板。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 100005;#define mid (L+R)/2#define lson o<<1, L, mid#defi原创 2016-07-28 19:01:57 · 237 阅读 · 0 评论 -
HDU 5458 Stability (2015 ACM/ICPC Asia Regional Shenyang Online)
题目分析 这道题真的不是很好写,树链剖分本来就是个很恶心的东西,这个程序里面还要倒着来,调bug调了一上午发现自己的while写成了if。整个人都不好了,不过也还好,才一上午。树链剖分可以处理2点之间路径上的一些东西,而且速度很快,本题也不例外,同样是处理这些东西。因为最初给你一些边,但是这些边组成的图可能不是一棵树因此没有办法做树链剖分,很明显我们要想办法将图转化为树,这道题我们首先将所有边塞原创 2016-07-29 14:07:33 · 381 阅读 · 0 评论 -
HDU 5221 Occupation(树链剖分)
题目分析 很明显这道题是一道树链剖分的题目,这个中间用线段树处理的让我感觉老是很怪异!!可能没有这样处理过线段树吧!对于第一种操作,很明显就是树链剖分的简单处理,对于第二种操作只需要更改相对应线段树中的值就可以了,对于第三种由于轻重链剖分对于每棵子树上的东西都需要处理,但是每棵子树上所有节点所在的区间是连续的,因此转化为了线段树的区间更新,其他的都不难写了。还有一点我们用w[]表示树中的节点在线原创 2016-07-30 13:08:55 · 222 阅读 · 0 评论