请问这两段代码有什么本质上的区别吗?
查看原帖
请问这两段代码有什么本质上的区别吗?
571147
zhlzt楼主2023/7/18 18:28
void pushdown(int p){ 
	int d1=addmx1[p],d2=addmx2[p];
	int b1=addse1[p],b2=addse2[p];
	if(mx1[ls(p)]>=mx1[rs(p)]) replace(ls(p),d1,d2,b1,b2);
	else replace(ls(p),b1,b2,b1,b2);
	if(mx1[rs(p)]>=mx1[ls(p)]) replace(rs(p),d1,d2,b1,b2);
	else replace(rs(p),b1,b2,b1,b2);
	addmx1[p]=addmx2[p]=addse1[p]=addse2[p]=0;
}
void pushdown(int p){ 
	int d1=addmx1[p],d2=addmx2[p];
	int b1=addse1[p],b2=addse2[p];
	int tmp=max(mx1[ls(p)],mx1[rs(p)]);
	if(mx1[ls(p)]==tmp) replace(ls(p),d1,d2,b1,b2);
	else replace(ls(p),b1,b2,b1,b2);
	if(mx1[rs(p)]==tmp) replace(rs(p),d1,d2,b1,b2);
	else replace(rs(p),b1,b2,b1,b2);
	addmx1[p]=addmx2[p]=addse1[p]=addse2[p]=0;
}

这道题的 pushdown 函数用前面那段代码过不了,后面那段能过,这是为什么?

2023/7/18 18:28
加载中...