
递推
文章平均质量分 61
oj
Ypuyu
Ypuyu
展开
-
[Hdp] lc552. 学生出勤记录 II(dp+递推+状态定义+状态转移+向前转移+好题)
一道正常的线性dp 问题吧,状态定义和转移都不太难。分类讨论三种情况就行了。看到 y 总写了一个根据当前状态向前进行状态转移的方法,感觉还是值得记录一下的。避免某些情况下比较难写。可以对比下常规的状态转移方式和本次的状态转移方式,体会一下区别。包括这个代码实现也是,细节点在于 i<n 的,因为在 i=n-1 时,会递推出来 i+1=n 的这一项状态值,所以也能算出结果。另外也贴一下普通的状态转移代码,体会一下两者不同之处。原创 2024-08-19 01:12:39 · 495 阅读 · 0 评论 -
[思维] aw3789. 隐藏字符串(脑筋急转弯+枚举+递推+aw周赛010_3)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:3789. 隐藏字符串 2. 题目解析 猜结论就行了。最优解一定是长度为 1 的,或者长度为 2 的子串。 因为如果长度大于 3 并且还是等差数列的话,那么长度为 1、2 的子串一定也包含在其中,所以,所以最优解一定在长度为 1、2 的子串中包含的有。 计算: 长度为 1:直接遍历每个字母取出现次数最高的即可。 长度为 2:前缀和 f[i][j] 统计字母 ij 出现的次数,因为仅有 26 * 26 种情况。 即,假设当前枚举的是以字符 x,结原创 2021-07-31 21:21:45 · 334 阅读 · 0 评论 -
[单调栈] aw3780. 构造数组(递推+单调栈+枚举+aw周赛009_3)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:3780. 构造数组 2. 题目解析 难题。预处理+递推+单调栈优化,考验码力啊。 题意就是:构造一个先增后减的序列,保证没有凹下去的情况。需要枚举每一个顶点作为 山峰,直接暴力枚举会超时,故使用单调栈进行预处理。 单调栈预处理每个点 k 左边和右边的最大和 L[k] 和 R[k], 则选择 k 作为顶点时 总和 = L[k] + R[k + 1]。 其中算法正确性以及边界情况需要讨论,在此不赘述。可以去看看题解。 时间复杂度:O(n)O(n)原创 2021-07-26 23:35:22 · 152 阅读 · 0 评论 -
[M哈希表] lc1743. 从相邻元素对还原数组(哈希表+递推+周赛226_2)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:1743. 从相邻元素对还原数组 2. 题目解析 数组元素各不相同,显然使用哈希表。 数组首元素、尾元素与其相邻的元素仅有一个,其余中间的相邻数都是两个。以此可以确定数组的头、尾元素是多少,与其相邻的唯一一个元素也就确定了,顺序递推即可。 递推时,从下标 2 开始,先得到下标 i-1 的两个相邻元素,i-2 已经填过了,把没填过的其中一个元素填到 i 位置即可。 时间复杂度:O(n)O(n)O(n) 空间复杂度:O(n)O(n)O(n) 二维数原创 2021-07-25 12:57:39 · 112 阅读 · 0 评论 -
[递推] aw95. 费解的开关(二维递推+开关问题+二进制枚举)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:95. 费解的开关 一维递推:[递推] aw3777. 砖块(思维+递推+CF1271B) 2. 题目解析 这个是 十字形 改变灯的状态的,并且只有 5*5 的棋盘大小,所以总的状态数量是 25∗52^{5*5}25∗5 暴力枚举肯定是不可行的。 两个性质: 每个点只会操作一次。 操作顺序是任意的。 那么,当我们操作完第一行之后,第一行已经全为 1,那么第二行的 0,只能通过操作第三行的同列元素进行改变,直到操作到第 4 行,将第 4 行变为全原创 2021-07-25 01:46:35 · 473 阅读 · 0 评论 -
[递推] aw1208. 翻硬币(递推+蓝桥杯第四届省赛CB)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:1208. 翻硬币 相同题,不同场景:[递推] aw3777. 砖块(思维+递推+CF1271B) 2. 题目解析 经典递推题目,思路和 [递推] aw3777. 砖块(思维+递推+CF1271B) 一样,数据保证一定有解,无解情况需要判断操作最后尾元素和目标尾元素是否相同。 从头到 n-1 都是字符相同的,第 n 个字符如果不相同那也不能再操作了,也就是无解情况了。 时间复杂度:O(n)O(n)O(n) 空间复杂度:O(n)O(n)O(n)原创 2021-07-24 21:32:09 · 114 阅读 · 0 评论 -
[递推] aw3777. 砖块(思维+递推+CF1271B)
文章目录1. 题目来源2. 题目解析 1. 题目来源 链接:3777. 砖块 2. 题目解析 经典的递推问题,也有类似问题,翻硬币问题。这种开关问题也可以拓展到二维平面上,枚举第一行的所有状态,递推即可,时间复杂度是 O(2n)O(2^n)O(2n)。当数据较大时,可以将其转化为高斯消元问题,时间复杂度为 O(n3)O(n^3)O(n3)。 最终状态一定是全 W 或者全 B。假设最终能变成全 W,则可以从头开始向后递推,如果当前元素不是 W,代表当前元素一定需要从 B 改变为 W,那么就需要反转当前元素和原创 2021-07-24 21:17:42 · 229 阅读 · 0 评论