摘要: 先来介绍一下线段树。 线段树是一个把线段,或者说一个区间储存在二叉树中。如图所示的就是一棵线段树,它维护一个区间的和。 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这段区间的和。 比如说线段树1号节点表示[1,5]区间,它的值是13,也就是原数组1号位到5号位所有数 阅读全文
posted @ 2017-01-02 14:51 Frank的成长之路 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题目:codevs 1228 苹果树 链接:http://codevs.cn/problem/1228/ 看了这么多树链剖分的解释,几个小时后总算把树链剖分弄懂了。 树链剖分的功能:快速修改,查询树上的路径。 比如一颗树 首先,我们要把树剖分成树链。定义: fa[x]是x节点的上一层节点(就是他的爸 阅读全文
posted @ 2017-01-01 10:43 Frank的成长之路 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 题目: poj 2352 Stars 数星星 题意:已知n个星星的坐标。每个星星都有一个等级,数值等于坐标系内纵坐标和横坐标皆不大于它的星星的个数。星星的坐标按照纵坐标从小到大的顺序给出,纵坐标相同时则按照横坐标从小到大输出。 (0 <= x, y <= 32000) 要求输出等级0到n-1之间各等 阅读全文
posted @ 2016-12-31 20:07 Frank的成长之路 阅读(289) 评论(0) 推荐(0) 编辑
摘要: codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值。 我的线段树写法在运用的时候,需要更新或查找的区间是储存在y1,y2变量里面的,值是储存在变量v里面的,查询结果储存在变 阅读全文
posted @ 2016-12-31 13:00 Frank的成长之路 阅读(392) 评论(0) 推荐(0) 编辑