• 浅谈线段树优化DP


    浅谈线段树优化DP

    本篇随笔浅谈一下线段树优化DP。


    一、关于DP优化的两种方式

    DP算法是大家耳熟能详的最优化算法之一。

    有的时候,我们设计DP的时候,需要采取措施进行DP优化来适应题目对时间空间的要求。

    一般来讲,DP的优化有两种方式:第一种是针对状态设计进行优化。比如滚动数组优化一维。比如0/1背包优化枚举,比如状压和倍增DP等等。

    第二种是针对转移过程进行优化,比如一次转移是(O(n))的,卡时间,就想办法通过一些办法把一次转移的时间复杂度降低。

    比如,对于一些数列问题,可以通过递推公式进行通项公式的计算,进而做到(O(n) ightarrow O(1))的转移。

    还比如说,用一些数据结构维护转移所需的一些信息,以达到优化转移的效果。


    二、线段树优化DP的概念

    在DP过程中架线段树对DP的转移进行优化,就被叫做线段树优化DP。


    三、例题体会

    多讲没用,上题。

    比如这道:

    CF115E Linear Kingdom Races

    这道题是很经典的线段树优化DP。设计状态什么的都是次要的。转移的时候,不加优化是一次(O(n)),优化后变成一次(O(log n)),总复杂度变成:(O(nlog n))

    通过这道题,我们总结一下线段树优化DP的一半步骤。

    一、弄清楚线段树维护的是什么信息。

    二、弄清楚线段树维护的信息在转移过程中是否有修改,怎么修改。

    三、弄清楚线段树维护的信息在转移过程中是否随状态的更新而改变。

    大约就是这样。

  • 相关阅读:
    Chrome使用指南
    Vue2.x-踩坑记
    C# WinForm listView 多行删除 操作
    Winform中DataGridView多行删除
    20211026_阿里云服务器引流限制ssl的问题
    docker commit
    docker build
    docker build与docker commit
    阿里云Docker镜像仓库(Docker Registry)
    Docker Nginx安装(centos7)
  • 原文地址:https://www.cnblogs.com/fusiwei/p/13865689.html
Copyright © 2020-2023  润新知