社区讨论
进食后人
P3870[TJOI2009] 开关参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @meyamxr4
- 此快照首次捕获于
- 2025/08/30 21:24 6 个月前
- 此快照最后确认于
- 2025/11/03 23:40 4 个月前
如果你的代码是类似这样的
CPPvoid updata(ll x, ll l, ll r)
{
if (l == t[x].l && r == t[x].r)
{
t[x].add ^= 1;
t[x].n = t[x].r - t[x].l + 1 - t[x].n;
return;
}
if (r > t[x << 1].r)
updata(x << 1 ^ 1, max(t[x << 1 ^ 1].l, l), r);
if (l < t[x << 1 ^ 1].l)
updata(x << 1, l, min(t[x << 1].r, r));
pushup(x);
}
要在修改前pushdown
CPPvoid updata(ll x, ll l, ll r)
{
if (l == t[x].l && r == t[x].r)
{
t[x].add ^= 1;
t[x].n = t[x].r - t[x].l + 1 - t[x].n;
return;
}
pushdown(x);
if (r > t[x << 1].r)
updata(x << 1 ^ 1, max(t[x << 1 ^ 1].l, l), r);
if (l < t[x << 1 ^ 1].l)
updata(x << 1, l, min(t[x << 1].r, r));
pushup(x);
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...