社区讨论
警示后人
P10639BZOJ4695 最假女选手参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mjy3a1lj
- 此快照首次捕获于
- 2026/01/03 17:17 2 个月前
- 此快照最后确认于
- 2026/01/07 10:15 上个月
build 函数中,标记初始化要写在 if (l == r)外面以下是正确的
CPPinline 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);
}
而这是错误的
CPPinline 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 条回复,欢迎继续交流。
正在加载回复...