社区讨论

O^O刚学线段树合并,有个小小的细节问题

P4556【模板】线段树合并 / [Vani 有约会] 雨天的尾巴参与者 2已保存回复 4

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@locnok82
此快照首次捕获于
2023/10/30 16:46
2 年前
此快照最后确认于
2023/11/05 03:48
2 年前
查看原帖
关于mergemerge函数递归到叶子节点时
l==rl==r
为什么不需要执行pos[x]=lpos[x]=l操作
这样不是漏掉了答案吗...
如果一开始pos[x]=0pos[x]=0pos[y]!=0pos[y]!=0
合并过来的话,pos[x]pos[x]就不是零了啊..
CPP
int merge(int x,int y,int l,int r)
{
	if( x==0||y==0 )	return x+y;
	if( l==r ){ sum[x]+=sum[y]; return x; }
	ls[x] = merge(ls[x],ls[y],l,mid);
	rs[x] = merge(rs[x],rs[y],mid+1,r);
	pushup(x,l,r);
	return x;
}

回复

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

正在加载回复...