zoukankan      html  css  js  c++  java
  • 算法导论——区间DP

    今天我来浅谈一下区间DP

    常见的区间DP有一定的范围,例如$f[i][j]$表示从i到j的最长上升子序列的长度

    这里,由于这个值是唯一的,所以可以这么记录。

    那么一般的区间DP的动态转移方程是怎样的呢?

    其实这个并不固定,需要视题目而定,毕竟随机应变才是真本事

    一般的区间DP的循环与常规DP不同,大致是这样:

    for(int k=0;k<=n-1;k++)
    	for(int i=1;i<=n-k;i++)
        	int j=i+k;
            ...
    

    这段代码的重点在于枚举的是区间长度和区间起点

    有同学可能会问了:为什么要这么枚举呢?

    可以这么理解:当$k=0$时,$i=1-n$,而当$k=n-1$时,$i=1$,当$k=frac{n}{2}$时, $i=frac{n}{2} -n$,也就是说这段代码的时间复杂度为$Oleft(frac{n^2}{2} ight)$。

    不过,其实你如何枚举都是这个时间复杂度,所以完全可以根据自己的喜好、习惯来写。

    其实我还没有说什么就已经写了一大段了,所以说这只是浅谈而已,不过,放心好了,我以后还会更新的,就到这里吧

  • 相关阅读:
    mysql 主从复制
    通过git-bash 批量管理VMware虚拟机
    MySQL基础
    lnmp架构
    搭建yum仓库服务器
    什什么是集群?么是分布式?
    nginx介绍1
    网络抓包工具 wireshark 入门教程
    DNS原理总结及其解析过程详解
    PetaPoco中使用Exists
  • 原文地址:https://www.cnblogs.com/dbzrjr/p/suanfadp.html
Copyright © 2011-2022 走看看