关于pushup的一些疑问
查看原帖
关于pushup的一些疑问
235839
ST_AS_IS_ZHY楼主2024/4/2 21:20

为何pushup从

void pushup(int x)
{
	if(tr[2 * x].lsum == tr[2 * x].len) tr[x].lsum = tr[2 * x].len + tr[2 * x + 1].lsum;
	else tr[x].lsum = tr[2 * x].lsum;
	if(tr[2 * x + 1].rsum == tr[2 * x + 1].len) tr[x].rsum = tr[2 * x + 1].len + tr[2 * x].rsum;
	else tr[x].rsum = tr[2 * x + 1].rsum;
	tr[x].sum = max(tr[x].lsum, max(tr[x].rsum, tr[2 * x].rsum + tr[2 * x + 1].lsum));
	return;
}

改为

void pushup(int x)
{
	if(tr[2 * x].lsum == tr[2 * x].len) tr[x].lsum = tr[2 * x].len + tr[2 * x + 1].lsum;
	else tr[x].lsum = tr[2 * x].lsum;
	if(tr[2 * x + 1].rsum == tr[2 * x + 1].len) tr[x].rsum = tr[2 * x + 1].len + tr[2 * x].rsum;
	else tr[x].rsum = tr[2 * x + 1].rsum;
	tr[x].sum = max(tr[2 * x].sum, max(tr[2 * x + 1].sum, tr[2 * x].rsum + tr[2 * x + 1].lsum));
	return;
}

就能ac

2024/4/2 21:20
加载中...