HDU 4836 The Query on the Tree (欧拉序列,线段树,动态树)
2014-08-05 15:59
489 查看
The Query on the Tree
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 197 Accepted Submission(s): 91
Problem Description
度度熊最近沉迷在和树有关的游戏了,他一直认为树是最神奇的数据结构。一天他遇到这样一个问题:
有一棵树,树的每个点有点权,每次有三种操作:
1. Query x 表示查询以x为根的子树的权值和。
2. Change x y 表示把x点的权值改为y(0<=y<=100)。
3. Root x 表示把x变为根。
现在度度熊想请更聪明的你帮助解决这个问题。
Input
第一行为数据组数T(1 <= T <= 100)
每组数据第一行为N(1<= N <= 10000),表示树的节点数。
后面N-1行每行有两个数x,y ,表示x,y之间有一条边 1<=x,y<=N。初始时树是以1号节点为根节点。
之后的一行为N个数表示这N个点的点权(点权的范围是0到100)。
然后为整数Q(Q<=1000)为操作次数。
之后的Q行为描述中的三种操作。
Output
对于第k组输入数据,第一行输出Case #k 接下来对于每个”Query x”操作,输出以x为根的子数和。
Sample Input
2
5
1 2
1 3
3 4
3 5
1 2 3 4 5
5
Query 1
Change 3 10
Query 1
Root 4
Query 3
8
1 2
1 3
3 4
4 5
5 6
5 7
4 8
1 2 3 4 5 6 7 8
5
Query 1
Query 3
Root 5
Query 3
Query 1
Sample Output
Case #1:
15
22
18
Case #2:
36
33
6
3
中文题不解释:
题解:
除了有root操作与poj上的3321一样,这里解释下如何对root进行操作。
增加个变量root,也就是当前哪个节点是根节点,由dfs可以得到欧拉序列,通过欧拉序列我们可以知道当前的root是否是在我们所查询的节点u的子节点。
如果其是它的子节点,那么我们遍历下查询节点的儿子节点,看看根节点是在哪个儿子节点的子树上,假如实在儿子节点v上,那么就查询结果就是,u的区间和减去v的区间和。
如果u是根节点,那么之间算整个区间和就行了。
如果不是它的子节点,u也不是根节点,那么就直接计算u的区间和,它就是结果了。
区间修改同poj 3321,root操作,直接改变root变量的值就行了。
相关文章推荐
- HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树
- HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树
- HDU 4836 —— The Query on the Tree(线段树+LCA)
- Hdu 4836 The Query on the Tree
- hdu 4836 The Query on the Tree(线段树or树状数组)
- hdu 4836:The Query on the Tree(巧妙dfs序)
- hdu 4836 The Query on the Tree(线段树or树状数组)
- HDU 4010 Query on the tree LCT模板题
- Hdu 3804 Query on a tree 树链剖分+线段树
- hdu_4718_The LCIS on the Tree(树链剖分+线段树合并)
- hdu_4718_The LCIS on the Tree(树链剖分+线段树合并)
- Query on a tree(hdu 3804 树链剖分+线段树 vector)
- HDU 4718 The LCIS on the Tree (树链剖分+线段树区间合并)
- hdu 4918 Query on the subtree (动态点分治+动态开点+线段树)
- 【HDU 4718】 The LCIS on the Tree 【树链剖分+线段树合并】
- HDU 4718 The LCIS on the Tree (树链剖分 + 线段树区间合并)
- HDU 3804 Query on a tree 树链剖分 + 线段树离线操作 好题
- hdu 3848 CC On The Tree
- HDU4836 The Query on the Tree(树状数组&&LCA)
- HDU 4718 The LCIS on the Tree(树链剖分)