题意:给你n个区间,1操作表示把[l,r]赋值为1,2操作表示把[l,r]赋值为0,3操作表示把[l,r]异或1;
求第一个不为0的正整数。
思路:对于所有区间[l,r]取出l,r,r+1三个点;
离散化放入线段树中去
现在需要区间修改,区间异或,查询
需要两个lazy标记,一个存修改的值,一个存是否异或1.
区间查询log查找即可,详见代码。
小trick:需要加入最小值,即是1的情况;
#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #include #include #include #include