社区讨论

玄学...玄关...

P2574XOR的艺术参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lpjlrl2k
此快照首次捕获于
2023/11/29 18:07
2 年前
此快照最后确认于
2023/11/29 20:36
2 年前
查看原帖
洛谷IDE和本地评测都过了,但评测不给过?
CPP
#include<bits/stdc++.h>
#define lo (nw<<1)
#define ro (nw<<1|1)
#define md ((l+r)>>1)
#define int long long
using namespace std;

inline int read()
{
	int x=0,f=1;
	char ch=getchar();
	while(!isdigit(ch))
	{
		if(ch=='-')
			f=-1;
		ch=getchar();
	}
	while(isdigit(ch))
		x=(x<<1)+(x<<3)+(ch^48),
		ch=getchar();
	return x*f;
}

inline void write(int n)
{
	if(n<0)
		n=-n,
		putchar('-');
	if(n>=10)
		write(n/10);
	putchar(n%10+'0');
	return ;
}

const int N=200010;

int n,m;
int a[N];

struct node
{
	int sm,sz,ch;
}t[N<<3];

struct segment_tree
{
	void upd(int nw)
	{
		t[nw].sm=t[lo].sm+t[ro].sm;
		t[nw].sz=t[lo].sz+t[ro].sz;
		return ;
	}
	void mkch(int nw)
	{
		t[nw].ch=1;
		t[nw].sm=t[nw].sz-t[nw].sm;
		return ;
	}
	void psd(int nw)
	{
		if(t[nw].ch)
		{
			mkch(lo);
			mkch(ro);
			t[nw].ch=0;
		}
		return ;
	}
	void bld(int nw,int l,int r)
	{
		if(l==r)
		{
			t[nw].sm=a[l];
			t[nw].sz=1;
			return;
		}
		bld(lo,l,md);
		bld(ro,md+1,r);
		upd(nw);
		return ;
	}
	void atr(int nw,int l,int r,int x,int y)
	{
		if(x<=l&&r<=y)
		{
			mkch(nw);
			return ;
		}
		psd(nw);
		if(x<=md)
			atr(lo,l,md,x,y);
		if(y>md)
			atr(ro,md+1,r,x,y);
		upd(nw);
		return ;
	}
	int qry(int nw,int l,int r,int x,int y)
	{
		if(x<=l&&r<=y)
		{
			return t[nw].sm;
		}
		psd(nw);
		int sm=0;
		if(x<=md)
			sm+=qry(lo,l,md,x,y);
		if(y>md)
			sm+=qry(ro,md+1,r,x,y);
		return sm;
	}
}ST;

signed main()
{
	freopen("nm.out","w",stdout);
	n=read(),m=read();
	for(int i=1;i<=n;i++)
		a[i]=getchar()-'0';
	getchar();
	ST.bld(1,1,n);
	while(m--)
	{
		int op=read(),l=read(),r=read();
		if(op==0)
		{
			ST.atr(1,1,n,l,r);
		}
		if(op==1)
		{
			printf("%lld\n",ST.qry(1,1,n,l,r));
//			write(ST.qry(1,1,n,l,r));
//			putchar('\n');
		}
	}
	return 0;
}
数据:
CPP
input:
10 5
1001010110
1 2 3
0 6 9
1 7 10
1 2 5
1 2 7

output:
0
1
1
2

回复

0 条回复,欢迎继续交流。

正在加载回复...