社区讨论

警示后人

P10639BZOJ4695 最假女选手参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mjy3a1lj
此快照首次捕获于
2026/01/03 17:17
2 个月前
此快照最后确认于
2026/01/07 10:15
上个月
查看原帖
build 函数中,标记初始化要写在 if (l == r)外面
以下是正确的
CPP
inline void build(int u,int l,int r){
	l(u) = l,r(u) = r,tag1(u) = -inf,tag2(u) = inf,tag5(u) = 0;
	if (l == r){
		w(u) = max1(u) = min1(u) = a[l],max2(u) = -inf,min2(u) = inf,cntmax(u) = cntmin(u) = 1;
		return;
	}
	int mid = (l + r) >> 1;
	build(u << 1,l,mid);
	build((u << 1) | 1,mid + 1,r);
	pushup(u);
}
而这是错误的
CPP
inline void build(int u,int l,int r){
	l(u) = l,r(u) = r;
	if (l == r){
		w(u) = max1(u) = min1(u) = a[l],max2(u) = -inf,min2(u) = inf,cntmax(u) = cntmin(u) = 1;
        tag1(u) = -inf,tag2(u) = inf,tag5(u) = 0;
		return;
	}
	int mid = (l + r) >> 1;
	build(u << 1,l,mid);
	build((u << 1) | 1,mid + 1,r);
	pushup(u);
}
真的要被自己蠢笑了

回复

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

正在加载回复...