社区讨论

进食后人 if you only AC on #1 #5 #6

P6242【模板】线段树 3(区间最值操作、区间历史最值)参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mj30mtsu
此快照首次捕获于
2025/12/12 23:22
2 个月前
此快照最后确认于
2025/12/14 16:50
2 个月前
查看原帖
pushup\operatorname{pushup} 函数中更新次大值时,对于最大值不等的情况不要直接把最大值小的那个儿子的最大值赋到父亲的次大值上,应该要与另一个儿子的次大值进行 max\max
CPP
inline void pushup(int u){
	w(u) = w(u << 1) + w((u << 1) | 1);
	maxh(u) = max(maxh(u << 1),maxh((u << 1) | 1));
	if (max1(u << 1) == max1((u << 1) | 1)){
		max1(u) = max1(u << 1);
		max2(u) = max(max2(u << 1),max2((u << 1) | 1));
		cnt(u) = cnt(u << 1) + cnt((u << 1) | 1);
	}else if (max1(u << 1) > max1((u << 1) | 1)){
		max1(u) = max1(u << 1);
		max2(u) = max(max1((u << 1) | 1),max2(u << 1));
		cnt(u) = cnt(u << 1);
	}else{
		max1(u) = max1((u << 1) | 1);
		max2(u) = max(max1(u << 1),max2((u << 1) | 1));
		cnt(u) = cnt((u << 1) | 1);
	}
}

回复

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

正在加载回复...