solution-code2728

一道很麻烦的线段树模板题。

由于要进行翻转,01的数量、左边最长、右边最长,以及区间答案都需要处理。

询问操作就对需要的区间进行合并,用类似 pushup 的方法将 TreeNode 传递给上一层。

注意:

  • 翻转的时候 tag 标记也要做相应的改变(如果没有打标签就不能修改!)
  • tag 标签和 rev 标签会冲突,由于 rev 标签会修改 tag 标签的值,那么必须先处理 rev 标签才能处理 tag 标签
  • LmaxRmax 的含义,不是子树的左儿子或右儿子的最长连续值,而是子树全部的最长连续值
  • 在线段树操作中,修改操作直接修改单层, pushdown 操作修改其儿子

solution-code3734

环形序列:拆环为链,取 maxxsum-minn (刨去中间一块的剩余的链)的最大值

不能是整个序列的和:如果结果是序列的和,那么减去序列最小值

注意细节!