#include<bits/stdc++.h>
using namespace std;
int tr[800000],l1[800000],r1[800000];
int l2[900000],r2[900000],tr2[800000];
int lazy[900000],a[200000];
void pushup(int i,int l,int r)
{
int mid=l+r>>1;
r1[i]=r1[i*2+1];
if(r1[i*2+1]==r-mid)
{
r1[i]+=r1[i*2];
}
l1[i]=l1[i*2];
if(l1[i*2]==mid-l+1)
{
l1[i]+=l1[i*2+1];
}
tr[i]=max(tr[i*2],tr[i*2+1]);
tr[i]=max(tr[i],r1[i*2]+l1[i*2+1]);
r2[i]=r2[i*2+1];
if(r2[i*2+1]==r-mid)
{
r2[i]+=r2[i*2];
}
l2[i]=l2[i*2];
if(l2[i*2]==mid-l+1)
{
l2[i]+=l2[i*2+1];
}
tr2[i]=max(tr2[i*2],tr2[i*2+1]);
tr2[i]=max(tr2[i],r2[i*2]+l2[i*2+1]);
}
void pushdown(int i)
{
if(lazy[i]==1)
{
lazy[i]=0;
lazy[i*2]^=1;
线段树区间01区间值异或与相邻1个数
最新推荐文章于 2022-07-28 21:10:58 发布
这篇博客详细介绍了线段树数据结构在处理区间01值异或问题上的应用,探讨了如何高效地实现线段树以解决与相邻一个数进行异或操作的查询。
摘要由CSDN通过智能技术生成