摘要: 该题说的是一个小东西生活在管道内,长度为L,里面有一些蛋糕,现在动态的给定蛋糕的坐标,小东西的坐标初始话为0,当指令为吃蛋糕的时候,小东西将会去吃最临近的蛋糕。现在问你小东西在Q次询问下要走多远的距离。这题用树状数组+二分查找超时了。。 构造出一棵线段树,每个节点保留区间中所有的蛋糕数以及左右蛋糕最近的坐标。维护好线段树即可。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>using namespace std;int L, Q;struct Node{ int num, l, r, lef 阅读全文
posted @ 2012-07-20 21:38 沐阳 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 该题题义是给定一个公司的结构,然后针对每个员工的一系列操作。由于问题牵涉到一个员工以及一个员工所领导的部门,因此用普通线性结构显然效率太低。这里用到了线段树。step1:首先我们要确定题目是要对给定的点或者是区间进行操作,那么我们自然而然会想到线段树,但是这题还不是直接的线段树,需要对题中给定的关系进行离散话,也就是按 照先序或者是后序遍历进行排序,这样某一个员工所领导的部门下的成员就在物理上连续了,并且我们用两个数组分别记录某个成员所领导的部门的左边界和右边界。step2:有了上一步的操作后,我们就可以进行构树了,按照普通的线段树进行构建,线段树仅仅只是我们处理点和区间的一种数据结构,... 阅读全文
posted @ 2012-07-20 18:29 沐阳 阅读(652) 评论(0) 推荐(0) 编辑