社区讨论
关于懒标记下传顺序问题
P2572[SCOI2010] 序列操作参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m4vcra4k
- 此快照首次捕获于
- 2024/12/19 21:23 去年
- 此快照最后确认于
- 2025/11/04 12:37 4 个月前
在我的代码里pushdown操作是先下传了翻转操作的懒标记再下传覆盖操作的懒标记,这样是正确的,如果反过来就只有10pts。
然而我看题解中似乎是先下传覆盖的懒标记再下传翻转的,这是为什么呢?
此外,这种懒标记之间互相有影响的情况下,下传的顺序到底应该怎么考虑?
我的pushdown:
CPPvoid pushdown(int k,int l,int r,int mid) {
while(rev[k]) { //翻转
Rev(k*2,l,mid);
Rev(k*2+1,mid+1,r);
rev[k]--;
}
if(mod[k] != -1) { //覆盖
Mod(k*2,l,mid,mod[k]);
Mod(k*2+1,mid+1,r,mod[k]);
}
mod[k] = -1;
rev[k] = 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...