로 곡 P2574 - XOR 의 예술
1948 단어 데이터 구조
낙 곡 의 평 점 에 문제 가 있 는 것 같 습 니 다. 이것 은 분명 간단 한 문제 인 데 왜 이것 이 파란색 문제 일 수 있 습 니까?컨디션 이 너무 안 좋아 서 문 제 를 풀 거 야!!!
마지막, 코드:
#include
using namespace std;
string str;
const int maxn=2e5+100;
int ans;
int tree[maxn<<2];
int lazy[maxn<<2];
void push_up(int tp,int x)
{
tree[x]=tree[tp]+tree[tp+1];
}
void push_down(int tp,int x,int l,int mid,int r)
{
lazy[tp]^=lazy[x];
lazy[tp+1]^=lazy[x];
lazy[x]=0;
tree[tp]=(mid-l+1)-tree[tp];
tree[tp+1]=(r-mid)-tree[tp+1];
}
void build(int l,int r,int x)
{
if(l==r)
{
if(str[l-1]=='1')
tree[x]=1;
return ;
}
int tp=x<<1;
int mid=l+r>>1;
build(l,mid,tp);
build(mid+1,r,tp+1);
push_up(tp,x);
}
void update(int l,int r,int x,int L,int R)
{
if(l>R||r=r)
{
lazy[x]^=1;
tree[x]=(r-l+1-tree[x]);
return ;
}
int tp=x<<1;
int mid=l+r>>1;
if(lazy[x])
{
push_down(tp,x,l,mid,r);
}
update(l,mid,tp,L,R);
update(mid+1,r,tp+1,L,R);
push_up(tp,x);
}
void query(int l,int r,int x,int L,int R)
{
if(l>R||r=r)
{
ans+=tree[x];
return ;
}
int tp=x<<1;
int mid=l+r>>1;
if(lazy[x])
{
push_down(tp,x,l,mid,r);
}
query(l,mid,tp,L,R);
query(mid+1,r,tp+1,L,R);
push_up(tp,x);
}
int main()
{
int n,m;
cin>>n>>m;
cin>>str;
build(1,n,1);
int opt,l,r;
for(int i=0;i>opt>>l>>r;
if(opt)
{
ans=0;
query(1,n,1,l,r);
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.