解题报告:线段树的修改

原创 2015年07月09日 17:30:10

http://www.lintcode.com/zh-cn/problem/segment-tree-modify/

/**
 * Definition of SegmentTreeNode:
 * class SegmentTreeNode {
 * public:
 *     int start, end, max;
 *     SegmentTreeNode *left, *right;
 *     SegmentTreeNode(int start, int end, int max) {
 *         this->start = start;
 *         this->end = end;
 *         this->max = max;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
class Solution {
public:
    /**
     *@param root, index, value: The root of segment tree and 
     *@ change the node's value with [index, index] to the new given value
     *@return: void
     */
    void modify(SegmentTreeNode *root, int index, int value) {
        // write your code here
      	if (root->end == root->start){ 
			root->max = value; return;
		}
		int mid = root->start + (root->end - root->start) / 2;
		if (mid < index){
			modify(root->right, index, value); 
		}
		else{
			modify(root->left, index, value);
		}
		root->max = max(root->right->max, root->left->max);
    }
};


lintcode segment-tree-modify 线段树的修改

问题描述lintcode笔记比较左孩子的end与index,如果indexleft->end说明index在左子树,那就递归修改左子树,否则递归修改右子树。最后把root的max值更新。代码/** ...
  • waltonhuang
  • waltonhuang
  • 2016年07月21日 17:14
  • 182

线段树模板合集--单点替换,区间替换,区间增加3种情况

单点替换,单点增加,区间求最值,区间求和#include #include #include using namespace std; #define lson l , m , rt ...
  • qq547276542
  • qq547276542
  • 2016年05月30日 11:46
  • 3163

【模板】线段树单点修改

基本介绍 模板题目 代码实现 基本介绍在求区间最值的基础上加了一个单点修改 也就是下面代码中的update函数 主要通过不断二分区间往下找左右子区间 直到一个子区间只包括一个节点 直接改变这个节点的值...
  • qq_36303472
  • qq_36303472
  • 2017年09月14日 14:55
  • 82

线段树,一个更复杂的区间修改

今天AC了一道关于线段树比较复杂的题目,是关于区间修改的,但不同之处在于,修改方式有两种,一种是将给定区间内每个元素加上一个数--add,另一种是将给定区间内的所有元素设置为同一个数--set,对于每...
  • jinjiahao5299
  • jinjiahao5299
  • 2014年11月30日 14:21
  • 528

线段树模板:点修改,区间修改

最近在看《算法竞赛入门经典训练指南》, 感觉以前的想法几乎完全是错的,模板并不一定能直接套。 最近在看线段树,才知道线段树每个节点的附加信息才是重头戏,因此完全套模板是不可行的。但是思想方法可以借鉴,...
  • qq_33929112
  • qq_33929112
  • 2016年10月10日 17:00
  • 565

线段树(区间修改,区间求和)

lzay标记,注意query和updata的时候都需要push,并且push的位置不同#include #include #include using namespace std; const ...
  • lanxuan365
  • lanxuan365
  • 2015年08月15日 17:36
  • 281

线段树区间修改 lazy标记 大法

#include #include #define maxn 100000 + 10 #define Lson L, mid, rt
  • DoJintian
  • DoJintian
  • 2015年05月03日 10:39
  • 3503

线段树详解(单点更新与成段更新\区间更新操作)

本文纯属原创,转载请注明出处,谢谢。 距离第一次接触线段树已经一年多了,再次参加ACM暑假集训,这一次轮到我们这些老家伙们给学弟学妹们讲解线段树了,所以就自己重新把自己做过的题目看了一遍,然后写篇博客...
  • u014705673
  • u014705673
  • 2015年07月06日 15:57
  • 6522

某类线段树的复杂度分析

题目:http://codeforces.com/contest/610/problem/E 题意:给出一个长为n,n
  • hdu2014
  • hdu2014
  • 2015年12月29日 22:06
  • 1062

【模板】线段树_区间最值、区间求和、修改

大概也算是线段树练习4、5的雏形 总之蒟蒻还没调出set和倍数QAQQQQQQQ 先看看最值吧 代码如下√#include #include #include #include #def...
  • Loi_Shirley
  • Loi_Shirley
  • 2016年07月21日 22:42
  • 590
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解题报告:线段树的修改
举报原因:
原因补充:

(最多只允许输入30个字)