摘要: 划分树理解:建树的时候,bulid(int f,int e,int root,int d),在区间[f,e]中,将线段树左右端点(root的左右值)设为f和e。当前层是第d层,将下一层的左右子树分类好,即算出这一层在[f,e]区间的中值data[mid],之后小于data[mid]的值放d+1层的左边,大于data[mid]的值放d+1层的右边。建完树之后会打表将建树的过程在每一层记录下来。最多建20层,因为2^20已经足够存储很大的数列了。update的时候通过递归,确定在下一层左右哪一个子树,递归到下一层的时候减小所求区间,直到区间长度为1时,返回区间值。 1 #include <i 阅读全文
posted @ 2012-08-04 12:29 HUJJ 阅读(292) 评论(0) 推荐(0) 编辑