
动态规划
文章平均质量分 56
与风做友
这个作者很懒,什么都没留下…
展开
-
第十三届蓝桥杯C B组 G:积木画
题意:在一块2*N的话画布上有三种不同的积木,问恰好拼完 N 列的时候有多少不同的方案?思路:一看是 2*N 的画布,且数据量很大,所以不用多想,咱们已经锁定dp了。dp就想好状态表示和转移方程。状态表示:我们用 f [N][3] 这个数组来表示不同状态下的方案数,f [i][0] 表示当前为第 i 列,且前i-1列已经拼满,且第 i 列也拼满的方案数;f [i][1] 表示当前为第 i 列,且前 i-1 列已经拼满,且第 i 列差一个拼满,由于第 i 列有两个格子,那么差一个格子拼..原创 2022-04-12 22:00:50 · 676 阅读 · 0 评论 -
D-括号问题
题意:一个 ( 与一个 ) 对应,一个 [ 与一个 ] 对应。每对应一个括号则最长括号长度加 2 ,如果此括号没有与之对应的括号,则无效。给出一个括号序列,求其中最长匹配括号长度。状态表示:dp[i][j] 表示第 i 个括号到第 j 个括号最长的匹配括号长度。转移方程:先枚举括号长度,对于每个长度,我们需要判断此长度的左右断点 S[i] S[j]是否匹配,如果匹配,那么dp[i][j]就等于第 i+1 个括号到第 j-1 个括号最长匹配长度 + 2.如果不匹配那么我们就..原创 2022-04-02 17:59:51 · 209 阅读 · 0 评论 -
最长回文子串长度
状态表示:dp[i][j] 表示第 i 个字符到第 j 个字符是否为回文串。转移方程:显而易见我们需要先枚举子串长度,最小回文串就是一个字符时,所以dp[i][i]应该置1。同时两个相邻字符如果相同,这也为长度为2的回文串成立的条件。我们的字符串 存于数组 S 中,如果串 S [i] 到 S [j] 的左端点S [i]与右端点S [j]相同,这时如果 串 i+1 到 j-1 是一个回文串,那么串 S [i] 到 S [j] 也是一个回文串。其余情况都不是回文串。所以有状态转移方程 i..原创 2022-04-02 17:19:39 · 105 阅读 · 0 评论 -
动态规划之最长公共子序列
题意:给出两个字符串X,Y。求出X,Y两个字符串的最长公共子序列长度。这算是动归的入门题了,但是需要考虑好思路。状态表示dp [i][j]表示串 X 的前 i 个字符和串 Y 的前 j 个字符的最长公共子序列长度。转移方程我们的思路是这样的:用变量 i 代表遍历到了 X 的哪个字符,变量 j 代表遍历到了 Y 的哪个字符。如果 X[i] == Y[j] ,那么我们就把这个字符加到子序列中继续判断,如果X[i] != Y[j],我们就延续上个状态中最长的子序列,继续判断。举一个简单..原创 2022-04-02 17:07:25 · 745 阅读 · 0 评论 -
多重背包问题---超详细讲解+优化(不懂你揍我)
多重背包我们其实可以看成为01背包和完全背包的组合。但是怎么组合的呢?也可以就把多重背包问题转换成01背包问题,我们一起来看看解题思路。1.状态表示DP问题我们先来看状态表示二维数组的表示,F[i][j]代表前 i 个物品中,背包容量为 j 时所能拿到的最大价值。然后我们就看如何把多重背包转换成01背包与完全背包。2.转换(1)转换为01背包我们知道,01背包问题指的是各个物品只有一件,但在多重背包问题中,我们每种物品有 Si 件。我们可以考虑将多个同种物品合成一件物品。..原创 2022-04-01 18:51:24 · 36524 阅读 · 31 评论 -
试题 历届真题 括号序列【第十二届】【省赛】【B组】
题目分析 :看完题觉得题目挺难的,考虑过用dp做,但无奈想不出来合适的转移方程。后来看了题解,终于理解,写下这篇题解,包含一些自己的理解。对于 '(' 和 ')' ,并不是我们遇到一个不匹配的括号就需要加上与之匹配的括号。比如(((),第一个括号为左括号,第二个括号也为左括号,但跟第一个括号匹配的括号我们也不一定加在第二个括号处,可以等着从后面的括号处加,再或者后面会出现右括号与第一个左括号匹配。所以我们对于一个括号序列最少需要添加多少个是必须遍历到n才知道的,也就是说我们希望尽...原创 2022-03-31 17:22:12 · 2931 阅读 · 2 评论