![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
文章平均质量分 60
-白羊-
这个作者很懒,什么都没留下…
展开
-
POJ2229 Sumsets——找规律or完全背包
Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that sum to 7:1+1+1+1+1+1+11+1+1+1+1+21+1+1+2+21+1+1+41原创 2021-05-13 23:46:10 · 173 阅读 · 1 评论 -
每日dp理解(05)——继续01背包,5倍经验日
题目背景现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好友,想着能否把他们干掉。干掉能拿不少经验的。题目描述现在absi2011拿出了x个迷你装药物(嗑药打人可耻….),准备开始与那些人打了由于迷你装一个只能管一次,所以absi2011要谨慎的使用这些药,悲剧的是,没到达最少打败该人所用的属性药了他打人必输>.<所以他用2个药去打别人,别人却表明3个药才能打过,那么相当于你输了并且这两个属性药浪费了。现在有n个好友,有输掉拿的经验、赢了拿的原创 2020-09-22 20:16:35 · 145 阅读 · 0 评论 -
01背包模型P1164 小A点菜
一定要注意:在不同的条件之下,dp数组代表的含义不同,一般是问题问的元素。题目背景uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种。uim指着墙上的价目表(太低级了没有菜单),说:“随便点”。题目描述不过uim由于买了一些辅(e)辅(ro)书,口袋里只剩MMM元(M≤10000)(M \le 10000)(M≤10000)。餐馆虽低端,但是菜品种类不少,有NNN种(N≤100)(N \le 100)(N≤100),第iii种卖aia_iai元(ai≤100原创 2020-09-21 22:26:47 · 78 阅读 · 0 评论 -
每日dp理解(04)——类01背包问题(装箱问题)
先来说说什么是01背包吧,背包是你存放货物的容器,而01描述了货物只能拿一次的性质。在用动态规划解决本类问题时,首先要明确状态:当前的货物是否要装入背包。这就引出了dp数组的含义。状态方程则是由为了要使装入背包货物的价值尽可大,在每次有可能装入一个货物时,要比较背包当前的价值,和装入货物后的最大价值思想引出。题目描述有一个箱子容量为VVV(正整数,0≤V≤200000 \le V \le 200000≤V≤20000),同时有nnn个物品(0<n≤300<n \le 300<n≤30原创 2020-09-21 21:09:43 · 327 阅读 · 0 评论 -
每日dp理解(03)——从0-1背包问题理解状态和dp数组的含义
由前面的学习知道,解决动态规划的两个核心点就是找到,最优子结构和状态方程。而最优子结构的数值会存放在dp数组里。可是这个dp数组有各种各样的维度,在初学的时候多半会想不懂dp数组的维数到底是这么确定的,今天咱们就来讨论这个问题。由于dp数字存放最优子结构的值,而这个结构可以被视作是某个计算过程的一个状态。所以dp数组的维数,由当前问题的性质所决定,而这些性质可以准确的描述当前问题的状态。例如0-1背包问题:dp[i][j]的第一维表示当前要放入背包的是第几个物品,第二维表示背包的容量(要尽可能的高价原创 2020-09-20 22:59:08 · 1958 阅读 · 0 评论 -
动态规划02——最优子结构
通过前文知道,动态规划最重要的两个元素就是dpTable和状态转移方程,今天就来讲讲dpTable。动态规划之所以可以加快枚举速度完成计算,就是因为在dpTable中保存了最优子结构的结果,进而在自底向上过程中,当之后的计算中包含本结构时,可以直接调用,节省计算的时间。这就间接的说明了转移方程的组成模式:在计算一个值时,首先分析是否存在最有子结构(对应的dp数组的值得情况),进而通过比较两种(多种)不同计算方式,更新最优子序列。...原创 2020-09-17 23:23:20 · 589 阅读 · 1 评论 -
每日dp理解(1)——dp核心元素
从上一次写博客到现在,已经两个多月了。这两个除了在准备期末考试就是打游戏了说实话是有些浪……就当给自己放了一个长假吧:)好了,进入正题。最近两周在算法方面最重要的任务就是捡起假期学的dp并深入学习,理解这类题目的解题思路:明确题目中变化的状态(状态组成事件)——定义dp数组的含义——寻找状态转移方程(状态之间的变化联系)俗话说磨刀不误砍柴工,今天是学习的第一天,首先理解dp的核心元素。1.使用dpTable记录最优子结构,为后续计算提供最优解由于在动态规划的解题过程中常常使用递归,可以列出递归树。原创 2020-09-16 09:13:40 · 738 阅读 · 0 评论 -
leetcode每日一题——最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-path-sum在看到求解给定一个二维数组求从左上角到右下角的最小路径和时,可能会想到用dfs或者bfs。原创 2020-07-24 11:31:35 · 234 阅读 · 0 评论