这几天开始了线段树的学习,假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点。线段树的用处就是,对编号连续的一些点进行修改或者统计操作,修改和统计的复杂度都是O(log2(n)).
线段树的原理,就是,将[1,n]分解成若干特定的子区间(数量不超过4*n),然后,将每个区间[L,R]都分解为少量特定的子区间,通过对这些少量子区间的修改或者统计,来实现快速对[L,R]的修改或者统计。
主要题型:
单点修改,区间查询。最基本的线段树操作。
区间修改,单点查询。如果是区间求和问题,可以先叉分,转化为单点修改,区间查询。
区间修改,区间查询。为了防止线段树时间复杂度退化到O(N2),需要另外开一个lazy数组维护。我感觉这个部分比上两个点要难一些。
昨天上午开的专题,今天就解了一道题,第四题,是定点更新,区间最值的问题。这应该算是一道基础题目,直接用线段树解就行。
感觉这两天还是有点迷糊,没有完全适应开学的节奏,事情一多就没有条理,不知道该做什么。之前老师分享的前辈的心得,看完之后也有所感悟,希望自己能提高效率,高效地训练、学习。