[BZOJ4552]排序

考虑最后的$x$

我们只关系一个数大于等于$x$或小于$x$

对于$[l,r]$的区间操作,相当于把$0$都放在前面,把$1$都放在后面。

即支持区间修改,查询区间和。

可以用线段树实现

$pushdown$

void pd(int o,int l,int r){
    if(l==r)return;
    if(lz[o]!=-1){
        int m=(r+l)/2;
        lz[o*2]=lz[o*2+1]=lz[o];
        sum[o*2]=(m-l+1)*lz[o];sum[o*2+1]=lz[o]*(r-m);
        lz[o]=-1;
    }
}

 

posted @ 2019-07-15 10:14  周栎  阅读(92)  评论(0编辑  收藏  举报