zoukankan      html  css  js  c++  java
  • 有关Rujia Liu 动态规划的·一些总结

    1.动态规划是什么?

    就是很高级的大暴力啊!,打暴力的时候把值存起来避免重复计算,用来求组合优化问题的

    一个玄学东西;

    2.如何确定状态及转移方程?

    一般思路先把暴力打出来吧,,说不定打打暴力(就像第一次做数字三角,,,暴力出dp)就把状态和转移方程找到了(鄙人觉得做动规前

    先打暴力,一是避免翻车,二也能梳理思路以便找dp状态及方程)。但这是对于一些比较普通的dp,

    遇到难的怎么办?    ,,,,看命吧,但时刻记住状态决定了方程,也决定了程序实现的复杂程度,觉得不太能实现程序时就该换

    换思路,改个状态想一哈了。

    3.蒟蒻的我觉得设计状态可以有如下思路

    1)可以先写递归暴力,在其中寻找需要用以保存以减少复杂度的值

    2)寻找最优子结构,一道题目能用dp一定具有最优子结构,要保证找出的方程一定每部能求出当前最优(仿佛有些像贪心,其实我觉的

    两种方法有互通的地方)

    3)拿到一道dp题可以花个几分钟想想能不能放在DAG上做,能的话,往往朝这个方向去想就能得出方程啦!(其实01背包放在DAG上也可以

    想得通)

    4)状态可以朝这几个方面去想:距离答案还有多远,如uva116,这样即可从答案往前推,以答案为边界条件

    当前已取得最优值,如uva11584,状态设计为dp[i]为0~i已取得的最小回文字串数目,即可的dp[i]=min{dp[j]+1| j+1...i为回文串}

    如若发现当前状态无法用未更新值求得最优,如uva11400,可以用面的值来求取更新前面的最优值

    这是蒟蒻的我关于dp方法的总结,(写怎么样无所谓了,反正自己看。。。)

    此博文全得益于我亲爱的姐姐(要不是昨天晚上她和我打了一晚游戏,,今天也不会没头脑写题,来写博客。。。)

  • 相关阅读:
    【PHP】最详细PHP从入门到精通(二)——PHP中的函数
    利用 MUI开发app, 如何实现侧滑菜单及其主体部分上下滑动
    JavaScript面向对象编程—this详解
    利用Hadoop streaming 进行词频统计
    Java 平时作业七
    Java 平时作业六
    Java 平时作业五
    Java 平时作业四
    Java 平时作业三
    JAVA 平时作业二
  • 原文地址:https://www.cnblogs.com/lmjer/p/8426088.html
Copyright © 2011-2022 走看看