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} ]

  • 相关阅读:
    淘宝网的质量属性的六个常见属性场景
    架构漫谈读书笔记
    软件架构师的工作流程
    centos7通过docker安装mysql
    centos7下安装docker
    VMware 虚拟机下CentOS 7连接网络
    在JSP中使用el函数标签获取默认值(男女性别选项)
    ssm登录与退出
    MVC(Model -View-Controller)实例应用模式
    MVC模式
  • 原文地址:https://www.cnblogs.com/cjtcalc/p/12434836.html
Copyright © 2011-2022 走看看