警钟敲烂(线段树做法)
查看原帖
警钟敲烂(线段树做法)
732034
Exscallop64_楼主2025/1/17 10:53

如果你要合并两个懒标记:

不能这样直接覆盖:

Tag f(const Tag &a, const Tag &b){
  return b;
}

其中 f()f() 函数合并懒标记,aa 为原来的懒标记bb 为新添的懒标记,并用 11 表示住进,00 表示退房,1-1 表示不变。

注意到,如果 b=1b=-1,则懒标记应仍为 aa,而非直接覆盖返回 bb(即返回 1-1)。

所以,应该改为:

Tag f(const Tag &a, const Tag &b){
  return b.flag == -1 ? a : b;
}

被这点坑惨了,调了半个小时。

2025/1/17 10:53
加载中...