初学线段树,参考了别人的做法,这里记录一下自己理解,线段树是一种思想,没有具体的模板
在这里,线段树每个节点有三个成员:{ml,mr,mcolor}分别表示 区间的头尾跟覆盖的颜色,
mcolor为0时,表示[ml,mr]这个区间内覆盖的颜色不一样
mcolor不为0时,表示[ml,mr]这个区间内覆盖的颜色一样
[s t]为要操作的线段
更新时:
当[s t]恰好落在区间上,就让这个区间的mcolor为我们指定的color, 否则,区间的mcolor为0,这个区间的状态转移到处理它的两个孩子的状态
查询时:
当[s,t]访问到的区间mcolor刚好为0时,那么就直接返回当前区间的mcolor*(r-l+1),否则,访问它的子区间