0
点赞
收藏
分享

微信扫一扫

动态规划DP【持续更新】

动态规划

  动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。   动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。   动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。   通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。

动态规划问题满足三大重要性质

最优子结构性质:

子问题重叠性质:

无后效性:

递推 & 简单DP

  • HDU 2084——数塔【简单递推】
  • HDU 2044——一只小蜜蜂…【递推】
  • HDU 2018——母牛的故事【递推】
  • HDU 2050——折线分割平面【递推】
  • UVA 10328 -—— Coin Toss【DP & 大数】
  • CodeForces 429B——Working out 【DP】
  • 2020牛客寒假算法基础集训营1——I.nico和niconiconi【DP】
  • 2020寒假训练 Problem I. Omar Loves Candies【DP】

01背包

【01背包】详解:javascript:void(0)

  • HDU 2546——饭卡【01背包 + 贪心】
  • UVA 624——CD【01背包 + 打印路径】
  • UVA 562——Dividing coins【01背包平衡】
  • HDU 2955——Robberies【01背包变形】
  • POJ 2184——Cow Exhibition【01背包、负值】
  • HDU 2639——Bone Collector II【01背包、第k优解】
  • HDU 3466——Proud Merchants【01背包 + 排序消除后效性】
  • HDU 2126——Buy the souvenirs【01背包 + 种类数】

完全背包

【完全背包】详解:javascript:void(0)

  • HDU 1114——Piggy-Bank【完全背包 & 恰好装满】
  • POJ 2063 —— Investment【完全背包】

多重背包

  • HDU 1059——Dividing【多重背包 & 二进制优化】
  • HDU 2191——悼念512汶川大地震遇难同胞——珍惜现在,感恩生活【多重背包 & 二进制优化】
  • POJ 2392——Space Elevator【多重背包 & 二进制优化 & 贪心】

分组背包

  • HDU 1712—— ACboy needs your help【分组背包】
  • POJ 1837——Balance【分组背包】
  • HDU 3033——I love sneakers!【分组背包变形】【数据 & 条件的透彻分析】
  • HDU 3211—— Washing Clothes【分组背包 & 平衡划分 & 分组01背包】

树形背包

  • POJ 1155 ——TETE【树形背包】
  • HDU 1011——Starship Troopers【树形背包】
  • POJ 1947——Rebuilding Roads【树形背包】
  • HDU 1561——The more, The Better【树形背包 & 构建虚结点】
  • HDU 4003——Find Metal Mineral【树形DP & 类树形背包变形】

LIS

  • HDU 1003——Max Sum【最大子序列和】
  • HDU 1087——Super Jumping! Jumping! Jumping!【最长上升序列和 & 动态规划】
  • POJ 1239—— Increasing Sequences【严格递增子序列】
  • 2020牛客寒假算法基础集训营6.C——汉诺塔【贪心 & Dilworth定理 & 二分】【求上升子序列最小化分数】

LCS

  • HDU 1503——Advanced Fruits【LCS最长公共子序列变形 & 合并字符串 & 还原路径】
  • HDU 1159——Common Subsequence【LCS最长公共子序列】
  • UVA 111——History Grading【LCS最长公共子序列】
  • POJ 1080—— Human Gene Functions【LCS变形】( 好题! )

区间DP

  • 51Nod 1021——石子归并【区间DP】
  • HDU 3506——Monkey Party【区间DP & 四边形不等式优化】
  • POJ 2955——Brackets【区间DP】
  • POJ 1141——Brackets Sequence【区间DP & 打印路径】
  • CodeForces 149D——Coloring Brackets【区间DP & DFS & 记忆化搜索】(好题 、较难)
  • POJ 1651——Multiplication Puzzle【区间DP & 记忆化搜索】
  • HDU 4745——Two Rabbits【区间DP & 最长回文子序列】

树形DP

  • HDU 1520——Anniversary party【树形DP】
  • HDU 2196——Computer【树形DP】
  • POJ 1655——Balancing Act【树形DP & 树的重心】
  • POJ 1741——Tree【树形DP & 点分树】
  • POJ 3107——Godfather【树状DP & 树的重心】
  • POJ 2378——Tree Cutting【树形DP & 删边 & 树重心】
  • POJ 3140——Contestants Division【树形DP & 删边 & 点权树 & 树重心变形】
  • POJ 2486——Apple Tree【树形DP】
  • 2020牛客寒假算法基础集训营1——F.maki和tree【树形DP & 树上DFS】

状压DP

  • HRBUST 2457——判断数字【状压 & 暴力】
  • AcWing 91——最短Hamilton路径【状压DP】
  • 洛谷 P1879——[USACO06NOV]玉米田Corn Fields【状压DP】
  • POJ 1185——炮兵阵地【状压DP & 空间预处理优化】

数位DP

  • HDU 2089——不要62【数位DP模板题】

举报

相关推荐

0 条评论