首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【算法提高篇】(二)线段树之区间修改:懒标记的核心奥义与实战实现

    3.2.3 pushdown:下发懒标记到左右孩子 pushdown是懒标记特有的函数,作用是将当前节点的懒标记下发给左右孩子,更新孩子的信息并给孩子打标记,然后清空当前节点的懒标记。...必须在递归访问孩子节点之前执行,比如修改或查询时,如果需要深入到左右孩子,必须先执行pushdown,确保孩子节点的信息是最新的。...只要需要递归访问孩子节点,必须先执行 pushdown。...6.6 叶子节点执行 pushdown 叶子节点没有左右孩子,执行 pushdown 不会有实际效果,但不会报错,属于冗余操作,可加判断优化,但不影响正确性。...[p]; t.sum = (t.r - t.l + 1) * k; t.set = k; // set是赋值的懒标记,初始为-1 } // 区间赋值的pushdown函数 void pushdown

    17010

    MySQL一个关于derived table的bug描述与规避

    这个语句最大的特点就是运用了派生表(derived table),MySQL在8.0.22版本上引入了一个关于派生表的优化器开关derived_condition_pushdown, 默认设置为on。...我们看一下关于这个特性在官方文档中的描述: MySQL 8.0.22 and later supports derived condition pushdown for eligible subqueries...这个bug的产生主要是因为新特性derived_condition_pushdown的引入,关闭此特性,在这几个版本中就不会出现这个问题。...三、总结 MySQL8.0.22~MySQL8.0.25 因为优化器新特性derived_condition_pushdown带来的bug,可以通过derived merge与 derived_condition_pushdown...如果想让新特性derived_condition_pushdown发挥作用,就要避开它的使用限制。

    55550

    【算法提高篇】(三)线段树之维护更多的信息:从基础到进阶的灵活运用

    :如果涉及区间修改,需要设计对应的懒标记,明确标记的含义、如何下放(pushdown)、如何更新子节点的信息,确保修改操作的延迟执行不影响结果。...步骤 4:修改与查询逻辑 修改:完全覆盖则执行lazy翻转,否则先pushdown下放标记,再递归左右孩子,最后pushup整合信息; 查询:完全覆盖则返回亮灯数,否则先pushdown,再递归左右孩子求和...同时,pushdown 的时机是关键 —— 所有递归操作(modify/query)前,只要不是叶子节点,都要先判断是否有懒标记,有则下放,确保子节点信息准确。...步骤 4:修改与查询逻辑 修改:完全覆盖则执行lazy更新,否则先pushdown,再递归左右孩子,最后pushup; 查询:单点查询,递归到叶子节点返回sum即可,过程中需要pushdown下放标记。...时机缺失:在 modify/query 前没有执行 pushdown,子节点的信息还是旧的,查询 / 修改结果错误; pushdown 后未清空标记:下放标记后没有将父节点的懒标记置为初始值,导致标记被重复下放

    14410

    MySQL一个关于derived table的bug描述与规避

    这个语句最大的特点就是运用了派生表(derived table),MySQL在8.0.22版本上引入了一个关于派生表的优化器开关derived_condition_pushdown, 默认设置为on。...我们看一下关于这个特性在官方文档中的描述: MySQL 8.0.22 and later supports derived condition pushdown for eligible subqueries...这个bug的产生主要是因为新特性derived_condition_pushdown的引入,关闭此特性,在这几个版本中就不会出现这个问题。...三、总结 MySQL8.0.22~MySQL8.0.25 因为优化器新特性derived_condition_pushdown带来的bug,可以通过derived merge与 derived_condition_pushdown...如果想让新特性derived_condition_pushdown发挥作用,就要避开它的使用限制。

    57220
    领券