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方法的总结,(写怎么样无所谓了,反正自己看。。。)

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

  • 相关阅读:
    使用 Python 第三方库 daft 绘制 PGM 中的贝叶斯网络
    winedt (latex 编译器)解决中文的问题(CJK & CTEX)
    winedt (latex 编译器)解决中文的问题(CJK & CTEX)
    使用 LaTeX 绘制 PGM(Probabilistic Graphical Models)中的贝叶斯网络(bayesian networks)
    vc访问ACCESS数据库
    直接通过ADO操作Access数据库
    STL容器——对map排序
    C++ STL中Map的按Key排序和按Value排序
    C++直接初始化和复制初始化2
    C++直接初始化和复制初始化1
  • 原文地址:https://www.cnblogs.com/lmjer/p/8426088.html
Copyright © 2011-2022 走看看