zoukankan      html  css  js  c++  java
  • 浅谈线段树分治

    序言

    本文介绍了 " 线段树分治 " 在 ( ext{OI}) 中的一些妙用。

    写的很草率,神仙不要 D 我。

    (~)

    前置技能

    线段树。

    (~)

    线段树分治

    我们来看这样一个问题:

    • 有一些操作,每个操作只在 (l sim r) 的时间段内有效。
    • 有一些询问,每个询问某一个时间点所有操作的贡献。

    我们考虑对 时间轴 建一棵线段树。

    对于任意一个区间 ([l,r]) ,我们总是可以按线段树区间操作的方式,在线段树上划分出连续的 (mathcal{O(log n)}) 个区间。

    我们将操作对应的时间区间 ([l,r]) ,划分成 (mathcal{O(log n)}) 个区间,对应到线段树的 (mathcal{O(log n)}) 个节点上。

    按照 标记永久化 的思想,我们在每个节点上放一个 STL vector ,其挂着的是管理的区间内有效的操作集合。

    这样一来,对于每个操作,我们就可以在这 (mathcal{O(log n)}) 个节点上直接挂上该操作。

    我们发现我们只会在线段树上挂上 (mathcal{O(m log n)}) 个节点。

    最后我们遍历一遍线段树,每到达了一个节点,就执行相应的操作(挂在该节点 vectot 上的操作),然后递归处理左右节点,到达叶子节点时计算贡献,回溯时撤销掉在该节点上进行的操作。

    没错,这就是 线段树分治 的思想。不难发现,这是一个离线分治算法。

    (~)

    好题选讲

    先咕着 ......

    (~)

    结语

    希望本文对大家有所帮助。

    [ exttt{Thanks} exttt{for} exttt{watching} ]

  • 相关阅读:
    数学笔记目录
    机器学习笔记目录
    物理学笔记目录
    二阶递推公式的通项公式
    分析Analysis 笔记
    从傅里叶变换到小波变换
    电动力学 期末复习
    电动力学 期中复习
    热学 期中复习
    理论力学第一章 Lagrange方程
  • 原文地址:https://www.cnblogs.com/cjtcalc/p/12434836.html
Copyright © 2011-2022 走看看