如果你要合并两个懒标记:
不能这样直接覆盖:
Tag f(const Tag &a, const Tag &b){
return b;
}
其中 f() 函数合并懒标记,a 为原来的懒标记b 为新添的懒标记,并用 1 表示住进,0 表示退房,−1 表示不变。
注意到,如果 b=−1,则懒标记应仍为 a,而非直接覆盖返回 b(即返回 −1)。
所以,应该改为:
Tag f(const Tag &a, const Tag &b){
return b.flag == -1 ? a : b;
}
被这点坑惨了,调了半个小时。