什么情况???有点搞不懂
查看原帖
什么情况???有点搞不懂
1343308
IAKIOI66666楼主2024/8/7 22:51

代码 (估计也不对):

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,a[1000000];
struct tree{
	int l,r;
	int dat;
}t[400000];
void build(int p,int l,int r)
{
	t[p].l=l,t[p].r=r;
	if(l==r){t[p].dat=a[l];return;}
	int mid=(l+r)/2;
	build(p*2,l,mid);
	build(p*2+1,mid+1,r);
}
void change(int p,int l,int r) 
{
	if(l<=t[p].l&&r>=t[p].r)
	{
		t[p].dat=(r-l+1)-t[p].dat;
		return;
	}
	int mid=(t[p].l+t[p].r)/2;
	if(l<=mid)change(p*2,l,r);
	if(r>=mid)change(p*2+1,l,r);
	t[p].dat=t[p*2].dat+t[p*2+1].dat;
}
int ask(int p,int l,int r)
{
	if(l<=t[p].l&&r>=t[p].r)return t[p].dat;
	int mid=(t[p].l+t[p].r)/2;
	int val=0;
	if(l<=mid)val+=ask(p*2,l,r);
	if(r>mid)val+=ask(p*2+1,l,r);
	return val;
}
int main()
{	
	cin>>n>>m;
	build(1,1,n);
	while(m--)
	{
		int x,y,c;
		cin>>c>>x>>y;
		if(c==0)change(1,x,y);
		else cout<<ask(1,x,y)<<endl;
	}
    return 0;
}

输入没什么问题吧,为什么... 为什么读入到一半结束了

?????

2024/8/7 22:51
加载中...