首页 > 其他 > 详细

BZOJ-1036-树的统计Count

时间:2015-02-26 14:56:03      阅读:168      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!