如果你只AC #11
查看原帖
如果你只AC #11
375403
NASFsky楼主2023/9/20 19:58

有可能你在区间取相反数的时候只是打了个取反标记,而不是将标记取反。
比如我的错误代码:

void add2(int x,int l,int r)//区间相反数 
{
	sum[x]=-sum[x];
	int t1=maxn[x],t2=minn[x];
	minn[x]=-t1;
	maxn[x]=-t2;
	tag1[x]=-1;
}

正确写法:

void add2(int x,int l,int r)//区间相反数 
{
	sum[x]=-sum[x];
	int t1=maxn[x],t2=minn[x];
	minn[x]=-t1;
	maxn[x]=-t2;
	if(tag1[x]==-1)tag1[x]=1;
	else tag1[x]=-1;
}

(其实感觉这是挺智障的错误,应该没人会犯吧)

2023/9/20 19:58
加载中...