码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ-1036-树的统计Count

时间:2015-02-26 14:56:11      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:树链剖分

描述

一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和. 注意:从点u到点v的路径上的节点包括u和v本身.


分析

学了树链剖分就能做的题目.


  • 一个查询和操作和一个查询最大值操作, 中间的步骤不一样. 可以写两个函数, 返回值初始化的时候不一样, QSUM的时候初始化为0, QMAX的时候初始化的时候初始化为 -INF.

  • 想不通过树链剖分直接调用线段树 (比如本题的修改操作, 因为是单点修改), 修改的不是x而是tid[x]也就是x的新编号. 因为线段树里的编号是重新编的.

代码

https://code.csdn.net/snippets/607983

INF 可以设为 0x3f3f3f3f, 这样 memset(0x3f) 后数组初始值都等于 0x3fffffff. 比较好的性质. ——Archon

一堆宏, 写熟了很好用. ——Archon

BZOJ-1036-树的统计Count

标签:树链剖分

原文地址:http://blog.csdn.net/qq_21110267/article/details/43952731

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!