这个题……表示不知道怎么用线段树做……空间不够用啊……只会分块了qwq
分块的思想就是把整个区间分成若干个区间,操作中,若一个小区间完全被覆盖,则把状态加入一个存储的数组,否则直接下放到每个点
#include#include #include #include #include using namespace std;const int mo=500;char s[10];int n,m,k,x,y,z,chu[200020],seg[404],k1[404][200020];inline void re(int &a)//读入优化 { a=0; bool flag=0; char b=getchar(); while(b<'0'||b>'9') { if(b=='-') flag=1; b=getchar(); } while(b>='0'&&b<='9') a=a*10+b-'0',b=getchar();}void add(int l,int r,int j){ int fir=(l-1)/mo+1,las=(r-1)/mo;//fir是左端点所在的区间,las是右端点所在区间的左边的区间 if(las