写挂了
明天再调
#include <bits/stdc++.h>
#define il inline
#define Max 500005
#define ls(x) x<<1
#define rs(x) x<<1|1
using namespace std;
int n,m,t[Max],rv[Max],mx[Max][2],lx[Max][2],rx[Max][2],tg[Max],v[Max];
il int read()
{
char c=getchar();
int x=0;
while(c>'9'||c<'0')
c=getchar();
while(c>='0'&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
return x;
}
il void pushup(int x,int l,int r)
{
t[x]=t[ls(x)]+t[rs(x)];
int mid=(l+r)>>1;
for(int i=0;i<=1;i++)
{
lx[x][i]=lx[ls(x)][i];
if(i&&t[ls(x)]==(mid-l+1)) lx[x][i]+=lx[rs(x)][i];
if(!i&&!t[ls(x)]) lx[x][i]+=lx[rs(x)][i];
rx[x][i]=rx[rs(x)][i];
if(i&&t[rs(x)]==(r-mid)) rx[x][i]+=rx[ls(x)][i];
if(!i&&!t[rs(x)]) rx[x][i]+=rx[ls(x)][i];
mx[x][i]=lx[rs(x)][i]+rx[(ls(x))][i];
mx[x][i]=max(mx[x][i],max(mx[ls(x)][i],mx[rs(x)][i]));
}
}
il void pushdown(int x,int l,int r)
{
if(tg[x]!=-1)
{
int w=tg[x],mid=(l+r)>>1;
tg[x]=-1;
rv[x]=rv[ls(x)]=rv[rs(x)]=0;
tg[rs(x)]=tg[ls(x)]=w;
t[ls(x)]=(mid-l+1)*w;
t[rs(x)]=(r-mid)*w;
mx[ls(x)][w]=lx[ls(x)][w]=rx[ls(x)][w]=mid-l+1;
mx[rs(x)][w]=lx[rs(x)][w]=rx[ls(x)][w]=r-mid;
w^=1;
mx[ls(x)][w]=mx[rs(x)][w]=lx[ls(x)][w]=lx[rs(x)][w]=rx[ls(x)][w]=rx[rs(x)][w]=0;
}
if(rv[x])
{
int mid=(l+r)>>1;
rv[x]=0;
t[ls(x)]=mid-l+1-t[ls(x)];
t[rs(x)]=r-mid-t[rs(x)];
if(tg[ls(x)]!=-1) tg[ls(x)]^=1;
else rv[ls(x)]^=1;
if(tg[rs(x)]!=-1) tg[rs(x)]^=1;
else rv[rs(x)]^=1;
swap(lx[ls(x)][1],lx[ls(x)][0]);
swap(rx[ls(x)][1],rx[ls(x)][0]);
swap(lx[rs(x)][1],lx[rs(x)][0]);
swap(rx[rs(x)][1],rx[rs(x)][0]);
swap(mx[ls(x)][0],mx[ls(x)][1]);
swap(mx[rs(x)][0],mx[rs(x)][1]);
}
}
il void build(int x,int l,int r)
{
tg[x]=-1;
if(l==r)
{
t[x]=v[l];
mx[x][0]=lx[x][0]=rx[x][0]=!v[l];
mx[x][1]=lx[x][1]=rx[x][1]=v[l];
return;
}
int mid=(l+r)>>1;
build(ls(x),l,mid);
build(rs(x),mid+1,r);
pushup(x,l,r);
}
struct node
{
int lx,rx,mx,len;
node(int L=0,int R=0,int M=0,int LN=0)
{
lx=L,rx=R,mx=M,len=LN;
}
};
il void mdf(int x,int l,int r,int ql,int qr,int w)
{
if(ql<=l&&r<=qr)
{
if(w==2)
{
t[x]=r-l+1-t[x];
rv[x]^=1;
swap(lx[x][1],lx[x][0]);
swap(rx[x][1],rx[x][0]);
swap(mx[x][1],mx[x][0]);
}
else
{
t[x]=(r-l+1)*w;
tg[x]=w;
mx[x][w]=lx[x][w]=rx[x][w]=r-l+1;
w^=1;
mx[x][w]=lx[x][w]=rx[x][w]=0;
}
return;
}
pushdown(x,l,r);
int mid=(l+r)>>1;
if(ql<=mid) mdf(ls(x),l,mid,ql,qr,w);
if(qr>mid) mdf(rs(x),mid+1,r,ql,qr,w);
pushup(x,l,r);
}
il int qry(int x,int l,int r,int ql,int qr)
{
if(ql<=l&&r<=qr)
{
return t[x];
}
pushdown(x,l,r);
int mid=(l+r)>>1,res=0;
if(ql<=mid) res+=qry(ls(x),l,mid,ql,qr);
if(qr>mid) res+=qry(rs(x),mid+1,r,ql,qr);
return res;
}
il node qmax(int x,int l,int r,int ql,int qr)
{
if(ql<=l&&r<=qr)
{
return node(lx[x][1],rx[x][1],mx[x][1],r-l+1);
}
pushdown(x,l,r);
int mid=(l+r)>>1;
if(ql>mid) return qmax(rs(x),mid+1,r,ql,qr);
else if(qr<=mid) return qmax(ls(x),l,mid,ql,qr);
else
{
node tl=qmax(ls(x),l,mid,ql,qr),tr=qmax(rs(x),mid+1,r,ql,qr);
return node((tl.lx==tl.len?tl.lx+tr.lx:tl.lx),
(tr.rx==tr.len?tr.rx+tl.rx:tr.rx),
max(max(tl.mx,tr.mx),tl.rx+tr.lx),
tl.len+tr.len);
}
}
int main()
{
n=read(),m=read();
for(int i=1;i<=n;i++) v[i]=read();
build(1,1,n);
while(m--)
{
int opt=read(),l=read()+1,r=read()+1;
if(opt<3) mdf(1,1,n,l,r,opt);
else if(opt==4) printf("%d\n",qry(1,1,n,l,r));
else printf("%d\n",qmax(1,1,n,l,r).mx);
}
} 最后一次更新于2021-09-28


华纳圣淘沙公司开户新手教程
零基础学会(183-8890-9465薇-STS5099)
华纳圣淘沙公司开户
华纳圣淘沙公司开户保姆级教程(183-8890-9465薇-STS5099)
一步步教你开通华纳圣淘沙公司账户(183-8890-9465薇-STS5099)
华纳圣淘沙公司开户分步图解
首次开户必看:(183-8890-9465薇-STS5099)
华纳圣淘沙全攻略
华纳圣淘沙公司开户实操手册(183-8890-9465薇-STS5099)
华纳圣淘沙开户流程视频教程
手把手教学:(183-8890-9465薇-STS5099)
华纳圣淘沙公司开户
华纳圣淘沙公司开户完全指南(183-8890-9465薇-STS5099)
By 鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099 at November 21st, 2025 at 02:12 am.
华纳圣淘沙公司开户新手教程
零基础学会(183-8890-9465薇-STS5099)
华纳圣淘沙公司开户
华纳圣淘沙公司开户保姆级教程(183-8890-9465薇-STS5099)
一步步教你开通华纳圣淘沙公司账户(183-8890-9465薇-STS5099)
华纳圣淘沙公司开户分步图解
首次开户必看:(183-8890-9465薇-STS5099)
华纳圣淘沙全攻略
华纳圣淘沙公司开户实操手册(183-8890-9465薇-STS5099)
华纳圣淘沙开户流程视频教程
手把手教学:(183-8890-9465薇-STS5099)
华纳圣淘沙公司开户
华纳圣淘沙公司开户完全指南(183-8890-9465薇-STS5099)
By 鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099 at November 21st, 2025 at 02:12 am.
果博东方客服开户联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方公司客服电话联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方开户流程【182-8836-2750—】?薇- cxs20250806】
果博东方客服怎么联系【182-8836-2750—】?薇- cxs20250806】
By 鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099 at November 8th, 2025 at 11:49 pm.
果博东方客服开户联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方公司客服电话联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方开户流程【182-8836-2750—】?薇- cxs20250806】
果博东方客服怎么联系【182-8836-2750—】?薇- cxs20250806】
By 鍗庣撼鍏徃鍚堜綔寮€鎴锋墍闇€鏉愭枡锛熺數璇濆彿鐮?5587291507 寰俊STS5099 at November 8th, 2025 at 11:49 pm.
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
By qodstczdkm at October 7th, 2025 at 07:42 pm.
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
By surdbzucbm at October 7th, 2025 at 07:42 pm.
新盘 上车集合 留下 我要发发 立马进裙
By mgwimxeigh at October 6th, 2025 at 08:13 pm.