Segment Tree

cnblog

主要用于高效解决区间的动态查询问题,因为类似二叉树的结构,所以能保持操作的复杂度为O(logn)

操作

  • build
  • query
  • modify

特点

跟区间有关的问题都可以往线段树的方向想

线段树的build, modify和query过程类似,但是要根据存储的值来判断具体操作

形态

  • 最大,最小
  • 求和
  • 计数

Summary

数据结构的题目: 通过分析需要什么操作来找到适合的数据结构进行使用。

线段树:区间操作就一定要想到线段树 1.区间Get max/min, sum, count 2.线段树的三个性质(I. 这个是一个二叉树, II. 每个节点表示一段区间的max 或者sum。 III. 非叶子节点: 左右儿子等于叶子区间平分后的左右区间, 值等于左 右儿子的值的更新。) 3.了解线段树三个接口build, query, modify.

  1. 下标型和值型线段树

并查集:关于集合合并,判断在不在同一个集合中。