bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
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]脑洞治疗仪的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...
- bzoj千题计划279:bzoj4591: [Shoi2015]超能粒子炮·改
http://www.lydsy.com/JudgeOnline/problem.php?id=4591 最后的式子合并同类项 #include<cstdio> #include<i ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...
- bzoj千题计划250:bzoj3670: [Noi2014]动物园
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...
随机推荐
- 12-7jquery选择器学习
p:odd 选择奇数个数的p标签 p:even选择奇数个数的p标签 p:gt(n)选择下标 大于n的p标签 p:lt(n)选择下标小于n的p标签 $(":root " ...
- 【BZOJ4237】稻草人(CDQ分治,单调栈)
[BZOJ4237]稻草人(CDQ分治,单调栈) 题面 BZOJ 题解 \(CDQ\)分治好题呀 假设固定一个左下角的点 那么,我们可以找到的右下角长什么样子??? 发现什么? 在右侧是一个单调递减的 ...
- C#中DateTime的缺陷与代替品DateTimeOffset
C#中的DateTime在逻辑上有个非常严重的缺陷: > var d = DateTime.Now; > var d2 = d.ToUniversalTime(); > d == d ...
- LVS-NAT模式的配置详解
由于实验室拟态存储的项目需要通过NAT模式来映射NFS服务器已实现负载均衡的目的,通过调研了多种负载均衡机制,笔者最终选择了LVS的NAT模式来实现需求,接下来通过博客来记录一下LVS-NAT模式的配 ...
- 13.MySQL(一)
数据库简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 RDBMS 即关系数据库管理系统(Relational Database Management System) 1.特 ...
- Appserv(Apache) 配置ssl证书
一:打开httpd.conf文件,移除注释的行: Include conf/extra/httpd-ahssl.conf LoadModule ssl_module modules/mod_ssl.s ...
- Unity3D 动画状态简单控制核心代码
状态机是这样的 包含静止.跑.攻击.死亡四个动画 下面是核心代码(PS:代码高亮插件出问题了,将就看一下吧..) AnimatorStateInfo stateInfo = m_ani.GetCurr ...
- 如何 创建一个model对象保存到LIST集合里面并取出来
/// <summary> /// 缓存客服集合信息 /// </summary> public class model { /// <summary> /// 客 ...
- 微信公众号开发,weUi组件,问题总结
1.实现上拉分页,Google兼容问题,weui框架提供的模板是这样的($(document.body).infinite()),在body定一个div通过这个div,实现上拉 $('#wrapper ...
- RxJS速成 (上)
What is RxJS? RxJS是ReactiveX编程理念的JavaScript版本.ReactiveX是一种针对异步数据流的编程.简单来说,它将一切数据,包括HTTP请求,DOM事件或者普通数 ...