HDU3397(Sequence operation)线段树的多种操作(二)

2014-11-24 07:24:55 · 作者: · 浏览: 1
续1个数
int maxm=min(m-l+1,t[u<<1].rs)+min(r-m,t[u<<1|1].ls);//min(m-l+1,左孩子的rs)+min(r-m,右孩子的ls),
return max(maxm,max(maxl,maxr));
}
}
int main()
{
//freopen("C:\\Users\\Administrator\\Desktop\\kd.txt","r",stdin);
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
build(0,n-1,1);
for(int i=0; i
{
int x;
scanf("%d",&x);
if(x)
update(i,i,1,x);
}
for(int i=0; i
{
int op,a,b;
scanf("%d%d%d",&op,&a,&b);
if(op==0||op==1)
update(a,b,1,op);
else if(op==2)
swap(a,b,1);
else if(op==3)
printf("%d\n",find1(a,b,1));
else if(op==4)
printf("%d\n",find2(a,b,1));
}
}
return 0;
}