1:适用范围
将含有交集的区间合并。
2:原理
将区间的左端点排序后进行合并,合并时会遇见三种不同情况,处理时也要根据维护区间与遍历区间的关系来处理。
情况1
st(start)——————————ed(end)维护区间
———— 遍历区间
该遍历区间是维护区间的一个子集,因此合并后维护区间不会发生变化。
情况2
————————————
———————————
该情况维护区间的ed比遍历区间的ed短,因此要将维护区间的ed换成遍历区间的ed。
情况3
————————————
———————
维护区间与遍历区间交集为空集,遇到这种情况就说明第一个区间已经合并完成,开始第二个区间的合并,因此st,ed都要更新成遍历区间的st,ed。
3:
在做题时一般用pair来储存遍历区间,归并merge时处理的是维护区间。
另外 c艹11 for(auto item : alls)表示遍历alls,并用item代指alls,访问alls中元素时,可以item.first/second。并且sort函数sort pair时,优先以first元素sort。