http://www.lydsy.com/JudgeOnline/problem.php?id=4592

注意操作1 先挖再补,就是补的范围可以包含挖的范围

SHOI2015 的题 略水啊(逃)

#include<cstdio>
#include<iostream> #define N 200001 using namespace std; #define max(x,y) ((x)>(y) ? (x) : (y))
#define min(x,y) ((x)<(y) ? (x) : (y)) struct node
{
int L0,R0,mx0;
int siz; node operator + (node p) const
{
node A;
A.L0=L0;
if(L0==siz) A.L0+=p.L0;
A.R0=p.R0;
if(p.R0==p.siz) A.R0+=R0;
A.mx0=max(mx0,p.mx0);
A.mx0=max(A.mx0,R0+p.L0);
A.siz=siz+p.siz;
return A;
} }tr[N<<]; int sum1[N<<];
int tag[N<<]; int tot; int n; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} void build(int k,int l,int r)
{
tag[k]=-;
tr[k].L0=tr[k].R0=tr[k].mx0=;
tr[k].siz=sum1[k]=r-l+;
if(l==r) return;
int mid=l+r>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
} void tagging(int k,int w)
{
if(w) sum1[k]=tr[k].siz,tr[k].L0=tr[k].R0=tr[k].mx0=;
else sum1[k]=,tr[k].L0=tr[k].R0=tr[k].mx0=tr[k].siz;
tag[k]=w;
} void down(int k)
{
tagging(k<<,tag[k]);
tagging(k<<|,tag[k]);
tag[k]=-;
} void change(int k,int l,int r,int opl,int opr,int w)
{
if(l>=opl && r<=opr)
{
tagging(k,w);
return;
}
if(tag[k]!=-) down(k);
int mid=l+r>>;
if(opl<=mid) change(k<<,l,mid,opl,opr,w);
if(opr>mid) change(k<<|,mid+,r,opl,opr,w);
sum1[k]=sum1[k<<]+sum1[k<<|];
tr[k]=tr[k<<]+tr[k<<|];
} void query(int k,int l,int r,int opl,int opr,int w)
{
if(l>=opl && r<=opr)
{
if(w) tot+=sum1[k];
else tot+=tr[k].siz-sum1[k];
return;
}
if(tag[k]!=-) down(k);
int mid=l+r>>;
if(opl<=mid) query(k<<,l,mid,opl,opr,w);
if(opr>mid) query(k<<|,mid+,r,opl,opr,w);
} int find(int L,int cnt)
{
int R=L,mid;
int l=L,r=n;
while(l<=r)
{
mid=l+r>>;
tot=;
query(,,n,L,mid,);
if(tot<=cnt) l=mid+,R=mid;
else r=mid-;
}
return R;
} node Query(int k,int l,int r,int opl,int opr)
{
if(l==opl && r==opr) return tr[k];
if(tag[k]!=-) down(k);
int mid=l+r>>;
if(opr<=mid) return Query(k<<,l,mid,opl,opr);
if(opl>mid) return Query(k<<|,mid+,r,opl,opr);
return Query(k<<,l,mid,opl,mid)+Query(k<<|,mid+,r,mid+,opr);
} int main()
{
int m;
read(n); read(m);
build(,,n);
int ty,l,r,ll,rr;
int pos;
while(m--)
{
read(ty); read(l); read(r);
if(!ty) change(,,n,l,r,);
else if(ty==)
{
tot=;
query(,,n,l,r,);
change(,,n,l,r,);
read(ll); read(rr);
if(!tot) continue;
pos=find(ll,tot); //从l起,tot个1能补到哪儿
change(,,n,ll,min(pos,rr),);
}
else printf("%d\n",Query(,,n,l,r).mx0);
}
}

bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

  3. bzoj千题计划279:bzoj4591: [Shoi2015]超能粒子炮·改

    http://www.lydsy.com/JudgeOnline/problem.php?id=4591 最后的式子合并同类项 #include<cstdio> #include<i ...

  4. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  5. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  6. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  7. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  8. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  9. bzoj千题计划250:bzoj3670: [Noi2014]动物园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...

随机推荐

  1. 【CJOJ2512】gcd之和(莫比乌斯反演)

    [CJOJ2512]gcd之和(莫比乌斯反演) 题面 给定\(n,m(n,m<=10^7)\) 求 \[\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)\] 题解 首先把公因数直 ...

  2. Bzoj4237:稻草人

    题面 传送门 Sol \(CDQ\)分治 先对\(x\)排序,对\(y\)在\(CDQ\)分治是从大到小排序 从大到小加入,右边用单调栈维护\(x\)递增,\(y\)递减的序列 左边就是找到\(x\) ...

  3. angular何时触发脏检查机制

    ng只有在指定事件触发后,才进入$digest cycle: DOM事件,譬如用户输入文本,点击按钮等.(ng-click) XHR响应事件 ($http) 浏览器Location变更事件 ($loc ...

  4. 软件测试必备-前端知识点之html基础

    前端必备知识点 第一部分:HTML基础 一. web前端标准 1. 结构标签----html 2. 样式标准,美化----css 3. 行为标准---js 二. 五大浏览器厂商 1. ie 2. 谷歌 ...

  5. 8Manage:专注企业级CRM服务应用

    [导读]经过过去一段时间的资本寒冬,中国的企业服务市场热度渐退,开始步入平稳的发展阶段.面对中国越来越多企业的管理需求,这片具有巨大的发展空间的市场蓝海.我们应该如何面对企业客户CRM的需求,并将其更 ...

  6. Notepad++ JSON关键字自动提示

    Notepad++关键字自动提示 2017-08-31 目录 1 插件安装2 往JSON中加关键字3 智能提示 最近接口测试自动化框架的的case是json格式,用例的json的格式是固定的,定义专门 ...

  7. 蓝桥杯java 关于大范围时间的

    import java.util.Calendar; import java.util.Date; public class A { /*这道题学习使用了java的calendar和类,主要是对dat ...

  8. webpack学习(六)打包压缩js和css

    打包压缩js与css 由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成对JS与CSS的压缩混淆,无需引用额外的插件, 其命令we ...

  9. python中的str.strip()的用法

    python中字符串str的strip()方法 str.strip()就是把字符串(str)的头和尾的空格,以及位于头尾的\n \t之类给删掉. 例1:str=" ABC"prin ...

  10. 一步步教你开发、部署第一个去中心化应用(Dapp) - 宠物商店

    今天我们来编写一个完整的去中心化(区块链)应用(Dapps), 本文可以和编写智能合约结合起来看. 写在前面 阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么除此之 ...