
动态规划
文章平均质量分 91
动态规划
一个人在码代码的章鱼
加油!!!
展开
-
四边形优化DP 和 插头dp引入
四边形不等式是一种用于优化动态规划(DP)问题的数学工具,主要适用于形如 fi=minj<i{fj+cost(j,i)} 的转移方程。其核心思想是通过证明代价函数满足特定的不等式性质,从而缩小状态转移时的决策变量范围,将时间复杂度从 O(n2) 优化至 O(nlogn) 或更低。插头 DP 是一种用于解决棋盘路径、回路等状态压缩动态规划问题的方法。原创 2025-05-19 20:26:12 · 503 阅读 · 0 评论 -
数据结构与算法-动态规划3-状态压缩dp,数位dp
对于任意的 x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并且 a[x,y]+a[y,z]≥a[x,z]。接下来 n 行每行 n 个整数,其中第 i 行第 j 个整数表示点 i−1 到 j−1 的距离(记为 a[i−1,j−1])。当 N=2,M=3N=2,M=3 时,共有 33 种方案。当输入用例 N=0,M=0N=0,M=0 时,表示输入终止,且该用例无需处理。原创 2025-04-11 17:42:03 · 593 阅读 · 0 评论 -
数据结构与算法-动态规划-区间dp,状态机dp,树形dp
算法如其名,在树形结构上的dp问题,经常搭配dfs一起食用定义:树形 DP 以树作为数据结构,利用树的递归性质和无环特性,自底向上或自顶向下地在树上进行状态转移,从而求解问题的最优解。与一般动态规划类似,树形 DP 通过把原问题分解为多个子问题,并保存子问题的解来避免重复计算,以提高算法效率。原理基础:树的每个节点及其子树构成一个独立的子问题,父节点的状态往往依赖于子节点的状态。原创 2025-04-10 22:33:53 · 805 阅读 · 0 评论 -
数据结构与算法-动态规划-线性动态规划,0-1背包,多重背包,完全背包,有依赖的背包,分组背包,背包计数,背包路径
动态规划这玩意儿,就好比是在拓扑图上玩跳格子游戏。在图论中,咱们是从特定的节点跳到其他节点;而在动态规划里呢,我们是从一个状态 “嗖” 地转移到另一个状态。状态一般用数组来表示,就像 f [i][j],它就是一种超重要的状态,能从类似 f [i - 1][j] 这样的状态 “跑” 过来哦。确定状态:得根据问题的特点,像寻宝一样找出合适的状态表示,通常就是用数组来存这些状态啦。找出状态转移方程:这可是关键中的关键,要搞清楚状态之间是怎么 “串门” 的,也就是当前状态是咋从之前的状态推导出来的。处理边界条件:得原创 2025-04-10 21:12:40 · 1372 阅读 · 0 评论 -
数据结构与算法-动态规划-斜率优化
设 (dp[i]) 表示将前 (i) 个元素进行分段的最小总代价。原创 2025-02-18 18:51:46 · 1096 阅读 · 0 评论 -
数据结构与算法-动态规划-单调队列优化(最大子序列和,旅行问题,烽火传递,绿色通道,修建草坪)
(对单调队列的自己的见解:单调队列可以用爬山形象的来比喻:我们的视野范围就是窗口的大小,当我们翻过一个山头之后,我们就看不见山头那边的景色了,反应在数组中就是 (1,3,-1,),当我们遍历到-1的时候,假设我们的窗口是3,但是我们只能看见3,看不见3前面的1但是3后面的-1还是看的见的,因为这个-1可能成为新的山头,(1,3,-1,-2,-3))-2:当队列不为空且s[i]<=s[]q.back()时,队尾元素出队,保持队列单调递减(这样队首元素对应的前缀和是当前窗口内最小的,用于计算最大子序列和)。原创 2025-02-17 20:45:07 · 1314 阅读 · 0 评论 -
数据结构与算法-动态规划-数位dp(计数问题,度的数量,数字游戏,windy数,数字游戏2,不要62,恨7不成妻)
假设当前处理到第 pos 位,若当前位数字为 i,且前面状态为 state,根据问题的规则,可能会转移到新的状态 new_state,那么 dp[pos][new_state] 就需要根据 dp[pos - 1][state] 进行更新。例如,规定一个数字的首位不能为 0,且相邻数位的差值不能超过 2,求满足条件的数字个数。示例说明:当X=15,Y=20,K=2,B=2时,17=2^4+2^0,18=2^4+2^1,20=2^4+2^2 这三个数满足条件,即区间内满足条件的整数个数为3。原创 2025-02-17 15:46:49 · 1405 阅读 · 0 评论 -
数据结构预算法-动态规划-树形dp(没有上司的舞会,树的直径,树的中心,数字变换,二叉苹果树,战略游戏,皇宫看守)
树形 DP 以树作为数据结构,利用树的。原创 2025-02-13 19:56:05 · 949 阅读 · 0 评论 -
数据结构与算法-动态规划-区间dp(石子合并,环形石子合并,凸多边形的划分,加分二叉树,棋盘分割)
通常用 (dp[i][j]) 表示区间。原创 2025-02-12 16:09:17 · 953 阅读 · 0 评论 -
数据结构与算法-动态规划-状态压缩(蒙德里安的梦想,Hamilton路径,愤怒的小鸟,骑士,玉米田,炮兵阵地)
根据状态转移关系,结合问题的目标(如求方案数、最大值、最小值等),建立状态转移方程。原创 2025-02-11 23:36:19 · 554 阅读 · 0 评论 -
数据结构与算法-动态规划-状态机(股票问题,密码设计)
状态机是表示有限个状态以及在这些状态之间转移和动作等行为的数学模型。它能根据当前所处状态和输入的信号,决定后续的状态转移和相应输出。原创 2025-02-11 17:03:14 · 1432 阅读 · 0 评论 -
算法-动态规划-0-1背包问题(二维0-1背包,背包求方案数,求背包具体方案)
给定一组物品,每个物品都有自己的重量和价值,在限定背包容量的情况下,如何选择物品放入背包,使得装入背包的物品总价值最大,同时不超过背包的容量限制。原创 2025-02-10 19:46:08 · 1164 阅读 · 0 评论 -
算法-动态规划-多重背包问题,完全背包问题
给定(n) 种物品,每种物品都有无限个。第 (i) 种物品的重量为 (w_i),价值为 (v_i),同时有一个容量为 (W) 的背包。要求从这些物品中选取若干个放入背包,在物品重量总和不超过背包容量 (W) 的前提下,使选取物品的总价值最大。原创 2025-02-10 19:44:36 · 990 阅读 · 0 评论 -
数据结构与算法-动态规划-LIS(最长上升子序列问题)
LIS 问题即最长递增子序列(Longest Increasing Subsequence)问题,是计算机科学和算法领域中的经典问题,以下从定义、求解方法等方面详细介绍:子序列:设(S = {a_1, a_2, a_3, ....... a_n})是一个给定的序列,(S')是由(S)中的若干个元素按照它们在(S)中的相对顺序排列而成的序列,则称(S')是(S)的一个子序列。原创 2025-02-10 15:54:26 · 897 阅读 · 0 评论 -
数据结构与算法-动态规划-数字三角形类(图DP)
动态规划将一个复杂的多阶段决策问题分解为一系列相互关联的子问题,通过求解子问题并记录其结果,避免重复计算,从而高效地得到原问题的最优解。原创 2025-02-09 16:17:26 · 800 阅读 · 0 评论