zoukankan      html  css  js  c++  java
  • [学习笔记]CDQ分治

    发现我对CDQ分治的理解过于浅显。
    水平太差。

    有三类问题。

    解决和点对有关的问题

    这类问题多用于统计特殊 \((i,j)\) 的数量/使某类点对返回值函数的值最值。

    我们考虑分治:

    我们递归处理\([l,mid],[mid + 1,r]\)

    然后通过某数据机构/算法处理\([l,mid] \to [mid + 1,r]\)

    1D/1D动态规划

    1D/1D 动态规划指的\(dp\)数组为一维,转移复杂度为\(O(n)\)

    我们可以依旧是套路的处理。

    我们递归处理\([l,mid],[mid + 1,r]\)

    然后通过某数据机构/算法处理\([l,mid] \to [mid + 1,r]\)

    但是两者之间的关系我们需要进行一个处理。

    我们可以考虑CDQ分治的递归树为一颗线段树,CDQ分治为这棵树的中序遍历。

    我们始终遵循\(x \to y\),我们先处理完全\(x\),再处理\(x \to y\),再处理\(y\) 的原则。

    将动态问题转化为静态问题

    这类问题通常为「需要支持做 xxx 修改然后做 xxx 询问」的数据结构题。该类题目有两个特点:

    • 如果把询问 离线,所有操作会按照时间自然地排成一个序列。
    • 每一个修改均与之后的询问操作息息相关。而这样的“修改 - 询问”关系一共会有\(O(n ^ 2)\)对。

    我们此时把时间维作为第一维统计。

    如果修改之间是独立的,我们无需处理左右递归处理和跨域操作的关系,但如果操作依赖前面的操作,我们则依旧要遵循左先,转移,右后的原则。

    例题将在配套练习记录中给出。

  • 相关阅读:
    azure备份虚拟机
    本地git部署web连接azure的git存储库
    dnsmasq服务的安装与配置
    hadoop错误- slave节点无法启动data node数据节点进程,但是master节点datanode正常启动
    hadoop错误--转发-hadoop启动遇到的各种问题
    hadoop错误--集群启动master时namenode进程无法启动
    c++的字节对齐
    fstream 和 iostream
    C语言的声明的优先级规则
    齐次矩阵
  • 原文地址:https://www.cnblogs.com/dixiao/p/15685376.html
Copyright © 2011-2022 走看看