
毒瘤线段树题,基本上囊括了所有线段树操作。对于区间子段问题我们考虑用pre,suf维护区间前缀后缀最值,pushup时考虑区间合并,若左区间全为1才能与后区间合并,新前缀为左区间长度+右区间前缀。后缀同理。统计答案时在左区间答案,右区间答案,左区间后缀+右区间前缀中取max。
具体维护,len:区间长,Max:最大连续长度,pre:最长1前缀,suf最长1后缀,pre_0:最长0前缀,suf_0:最长0后缀,sum:区间1数量,7种区间信息。
维护3种lazytag:tag:翻转。to_0:0覆盖。to_1:1覆盖。
在query时以结构体形式传递需要合并的两个区间信息,注意翻转标记下传需要取异或即可。思维难度不大,代码难写。
