如果你10分...
查看原帖
如果你10分...
97344
devout楼主2020/5/7 16:51

10分:

int dfs(){
	int x,rt=0;
	ans1=ans2=0;
	read(x);
	if(!x)rt=merge(dfs(),dfs(),1,n);
	else update(rt,1,n,x,1);
	ans+=min(ans1,ans2);
	return rt;
}

100分:

int dfs(){
	int x,rt=0;
	read(x);
	if(!x)rt=merge(dfs(),dfs(),1,n);
	else update(rt,1,n,x,1);
	ans+=min(ans1,ans2);
        ans1=ans2=0;
	return rt;
}

原因就是读完右儿子之后的ans1和ans2是右儿子的答案,如果我们再做merge的话就会挂掉...

2020/5/7 16:51
加载中...