斜率优化的中心思想就是利用一次函数的斜率来优化某些 \(DP\) 转移方程。斜率优化的题目状态转移方程通常比单调队列优化更为复杂,同时斜率优化通常也会用到单调队列优化。 以下记录的题目基本上都为斜率优化的模板题。 [SDOI2012]任务安排 题意 本题的题意较为复杂。一台机器需要按顺序处理 \(n ...
分类:
其他好文 时间:
2021-06-22 18:06:41
阅读次数:
0
T1打包 一个二维01背包的板子,状态转移方程$$Dp_{j,k}=max\left \{Dp_{j,k},Dp_{j-Weight_i,k-V_i}+Value_i\right \}$$ T2暗黑破坏神 大概类似于分组背包,开$long\ long$,在更新$Dp$的过程中记录路径,递归输出即可。 ...
分类:
其他好文 时间:
2021-06-11 18:06:14
阅读次数:
0
简介 看到这个题目就想到了dp,但是这个dp状态转移方程说实话一时半会儿, 想不出来. 这个时候你可以其实可以通过画相关关系,进而得到状态转移方程. if(text1[i-1] == text2[j-1]) { dp[i][j] = dp[i-1][j-1] + 1; }else{ dp[i][j] ...
分类:
其他好文 时间:
2021-06-04 19:01:44
阅读次数:
0
动态规划——剑指 Offer 42. 连续子数组的最大和 题目: 思路: dp数组的定义:dp[i]是以 nums[i] 结尾的最大子数组和。 base_case:dp[0] = nums[0] 状态转移方程:dp[i]有两种「选择」,要么与前面的相邻子数组连接,形成一个和更大的子数组;要么不与前面 ...
分类:
编程语言 时间:
2021-05-20 17:50:09
阅读次数:
0
1.状态定义 dp[i]表示组成面额 i,有多少种方案。 2.状态转移方程 int[] coins = new int[]{1,5,10,25}; for(int coin: coins) { dp[k] += dp[k - coin]; } 比如dp[36] = dp[36-1] + dp[36 ...
分类:
其他好文 时间:
2021-04-23 12:06:20
阅读次数:
0
1.状态定义 dp[i]代表凑齐总价值 i 需要的最少硬币个数; 2.状态转移方程 for(int coin : coins) dp[i] = Math.min(dp[i], dp[i - coin] + 1); 322. 零钱兑换 class Solution { public int coinC ...
分类:
其他好文 时间:
2021-04-16 11:58:54
阅读次数:
0
一、概念 1、三要素重叠(+备忘录)子问题、最优子结构、状态转移方程 2、(列状态转移方程)步骤 明确初始条件base case、明确状态、明确选择、定义dp数组/函数 二、斐波那契数列 1、原始暴力递归 重复运算--重叠子问题 递归的时间复杂度 2、带备忘录的递归(自顶向下) class Solu ...
分类:
编程语言 时间:
2021-03-31 11:35:50
阅读次数:
0
动态规划 重叠子问题、最优子结构、状态转移方程就是动态规划三要素 思考状态转移方程: 明确 base case → 明确「状态」-> 明确「选择」 → 定义 dp 数组/函数的含义。 # 初始化 base case dp[0][0][...] = base # 进行状态转移 for 状态1 in 状 ...
分类:
其他好文 时间:
2021-03-29 12:05:58
阅读次数:
0
动态规划一般都是求最值问题,或者该问题的本质是求最值。 动态规划的本质是穷举,根据dp本身的定义写出状态转移方程,各个状态会有自己的范围,那就从中选出最大值,选择的方法是都试一遍找最大值。 动态规划思考与书写的流程: 1.根据题目想明白 状态 & 选择 & 结果 结果往往指的是题目要求的东西,比如说 ...
分类:
其他好文 时间:
2021-03-02 11:46:25
阅读次数:
0
原题链接 考察:状压dp 思路: 考虑到计算三角形,我们需要知道落脚点i和前一个落脚点j,所以需要三维数组.根据状态转移方程f[i][j][k] = f[i-{j}][k][t]+score很容易求出最大的权值.但是比较难想到怎么计算路径数目(对本蒟蒻而言).方法是再声明一个记录当前路径最大值的方案 ...
分类:
其他好文 时间:
2021-02-17 14:41:52
阅读次数:
0