zoukankan      html  css  js  c++  java
  • 浅谈线段树优化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的一半步骤。

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

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

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

    大约就是这样。

  • 相关阅读:
    【持续更新】Android 源码下载地点
    android Notification 的使用
    如何设置 Notification 中PendingIntent 的 Intent
    CodeSmith部分类型转换代码
    【转】Request.ServerVariables参考
    ADT
    根据IP从纯真IP数据库查询地址
    VS2008重置默认环境
    Eclipse 安装SVN插件
    C#序列化JSON对象
  • 原文地址:https://www.cnblogs.com/fusiwei/p/13865689.html
Copyright © 2011-2022 走看看