开始没看懂题,看懂了之后也不知道如何用线段树来做这题,百度了一下思路
思路:
我们一个一个操作来分析:(用0和1表示是否包含区间,-1表示该区间内既有包含又有不包含)
U:把区间[l,r]覆盖成1
I:把[-∞,l)(r,∞]覆盖成0
D:把区间[l,r]覆盖成0
C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换
S:[l,r]区间0/1互换
还有要注意的地方是把数组开为2倍,才可以用节点表示区间;注意a为0时的情况
#include
#include
#include
#include
#include
#include
#include
#include