警示后人
查看原帖
警示后人
656046
SW_YM楼主2024/7/25 10:41

如果你WAonWAon#22

注意:某个点位置存在最大种类救济粮当且仅当该种类粮食数量大于零

WrongWrong CodeCode:

void maintain(int rt)//maintain相当于pushup,个人习惯
{
	if(ns[ns[rt].lch].num>=ns[ns[rt].rch].num)
	{
		ns[rt].num=ns[ns[rt].lch].num;
		ns[rt].sig=ns[ns[rt].lch].sig;
	}
	else 
	{
		ns[rt].num=ns[ns[rt].rch].num;
		ns[rt].sig=ns[ns[rt].rch].sig;
	}
	return ;
}

ACAC CodeCode:

void maintain(int rt,int l,int r)
{
	if(l==r)
	{
		if(ns[rt].num>0)ns[rt].sig=l;
		else ns[rt].sig=0;
	}
	else
	{
		if(ns[ns[rt].lch].num>=ns[ns[rt].rch].num)
		{
			ns[rt].num=ns[ns[rt].lch].num;
			ns[rt].sig=ns[ns[rt].lch].sig;
		}
		else 
		{
			ns[rt].num=ns[ns[rt].rch].num;
			ns[rt].sig=ns[ns[rt].rch].sig;
		}
	}
	return ;
}

同样的,每次在合并/初始updateupdate时都要记得判断一遍numnum是否为零

2024/7/25 10:41
加载中...