晋中网站建设费用,工程项目建设自学网站,wordpress按分类调用文章,沈阳网站怎么推广题很简单#xff1a;给两个操作1#xff1a;查找最左边的a个空余块并填满 2#xff1a;把从第a个开始的连续b个块置空 线段树维护左连续#xff0c;右连续#xff0c;最大连续#xff0c;lazy-tag即可#xff0c;query函数值得学习 #includeiostream
#include给两个操作1查找最左边的a个空余块并填满 2把从第a个开始的连续b个块置空 线段树维护左连续右连续最大连续lazy-tag即可query函数值得学习 #includeiostream
#includecstring
#includecstdio
#includealgorithm
using namespace std;
#define maxn 500005
#define lson l,m,rt1
#define rson m1,r,rt1|1
int lmx[maxn2],rmx[maxn2],mx[maxn2],flag[maxn2];inline void set0(int l,int r,int rt){lmx[rt]rmx[rt]mx[rt]r-l1;flag[rt]0;
}
inline void set1(int l,int r,int rt){lmx[rt]rmx[rt]mx[rt]0;flag[rt]1;
}
inline void pushup(int l,int r,int rt){lmx[rt]lmx[rt1];rmx[rt]rmx[rt1|1];mx[rt]max(mx[rt1],mx[rt1|1]);int mlr1;if(lmx[rt1]m-l1) lmx[rt]lmx[rt1|1];if(rmx[rt1|1]r-m) rmx[rt]rmx[rt1];if(rmx[rt1]lmx[rt1|1]) mx[rt]max(mx[rt],rmx[rt1]lmx[rt1|1]); }
inline void pushdown(int l,int r,int rt){if(flag[rt]0){int mlr1; flag[rt1]flag[rt1|1]flag[rt];if(flag[rt]0){set0(lson);set0(rson);}else if(flag[rt]1){set1(lson);set1(rson);}flag[rt]-1;}
}
void build(int l,int r,int rt){if(lr){lmx[rt]rmx[rt]mx[rt]1;flag[rt]-1;return;}int mlr1;build(lson);build(rson);pushup(l,r,rt);
}
void update(int L,int R,int op,int l,int r,int rt){if(Ll Rr){if(op0) set0(l,r,rt);if(op1) set1(l,r,rt);return;}pushdown(l,r,rt);int mlr1;if(Lm) update(L,R,op,lson);if(Rm)update(L,R,op,rson);pushup(l,r,rt);
}
//cnt要么在左儿子要么在中间合并块要么在右子树
int query(int cnt,int l,int r,int rt){if(lr)return l;pushdown(l,r,rt);int mlr1;if(cntmx[rt1])return query(cnt,lson);else if(cntrmx[rt1]lmx[rt1|1])return m-rmx[rt1]1;else return query(cnt,rson);
}
int main(){int n,m;while(scanf(%d%d,n,m)2){build(1,n,1);int a,b,op;while(m--){scanf(%d,op);if(op1){scanf(%d,a);if(mx[1]a){puts(0);continue;}int tmpquery(a,1,n,1);printf(%d\n,tmp);update(tmp,tmpa-1,1,1,n,1);}else if(op2){scanf(%d%d,a,b);update(a,ab-1,0,1,n,1);}}}return 0;
} 转载于:https://www.cnblogs.com/zsben991126/p/9977184.html