随笔分类 -  ACM / 动态规划 区间dp

摘要:原题链接 考察:区间DP 思路: f[i][j]表示[i,j]区间的最大得分,那么状态转移方程f[l][r] = max(f[l][r],calc(f[l][k],f[k+1][r],op[k+1]) calc函数是什么呢,根据定义f[i][j]表示i,j区间合并后的最大得分,calc就是再将f[l 阅读全文
posted @ 2021-04-06 01:48 acmloser 阅读(50) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间DP 处理方式略像涂色...本蒟蒻是没想出来怎么转移.... 思路: 实际就是暴力...本蒟蒻还想了怎么快速判断循环..... 对于枚举的区间[l,r],看是否是循环区间,如果不是要再看里面的子区间是否为循环区间,枚举子区间f[l][r] = min(f[l][k]+f[k+1] 阅读全文
posted @ 2021-04-06 00:26 acmloser 阅读(56) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 这题就是一维的棋盘分割. 思路: f[i][j][k]表示将[i,j]区间分为k份得到的最大值.与棋盘分割不同的是,这道题是一维的,所以我们可以只枚举选上半边就可以枚举到所有方案.也可以枚举选下半边,但是注意这道题要预留足够的空间给进一步选择的上半边和下半边,因为memse 阅读全文
posted @ 2021-04-05 22:44 acmloser 阅读(284) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 这题好像HDU 4283 可以往左或者往右走.但是这道题起始位置不确定,也就是说,i位置不一定是栈底. 非常详细的题解 思路: 因为题目完全不一样,所以必须换一个思路.以f[i][j]表示灭掉[i,j]所有灯消耗的功率.首先明确老张灭灯只要路过了就会灭,因此最后的位置要么是 阅读全文
posted @ 2021-04-05 14:57 acmloser 阅读(71) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 思路: 这道题和凸边形的划分很像,枚举中间点,两边成为独立的两部分.只不过这题可以横,纵着切,所以是两个方向的区间dp.对于一块矩形板,我们选了上面,下面与平均值的标准差就确定了,快速求解矩阵和可用二维前缀和预处理.因为要用到二维,所以是五维转移方程f[x][y][a][b 阅读全文
posted @ 2021-04-05 12:01 acmloser 阅读(73) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 思路: 根据题目我们可以发现,当相邻两颗珠子合并时,只剩下首尾,中间部分不关心. 我们回顾一下区间dp,f[l][r]表示将[l,r]区间内的石子合并(以模板题为例),中间是什么我们也不关心,而f数组求最值是以某个分割点k来划分集合. f[l][r] = max(f[l][ 阅读全文
posted @ 2021-04-03 16:11 acmloser 阅读(135) 评论(0) 推荐(0) 编辑
摘要:原题链接 思路: 和这道Multiplication Puzzle 很像,但初始化不一样.f[i][j]表示杀死[i,j]区间的最小值,枚举的间断点k是最后杀死的狼k.那么状态转移方程很好想,主要是初始化的问题,当len=1时,f[i][j] = a[i]还是a[i]+b[i-1]+b[i+1],由 阅读全文
posted @ 2021-03-18 02:13 acmloser 阅读(38) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间DP 思路: 观察样例可以发现,当两只兔子在同一块石头时,ans+1,在不同但质量相同的石头时,ans+=2.这里就有点像密码脱落那道题求回文序列的长度(不是子串).但是根据样例2,我们求出来的最大回文序列长度只有3,原因是在回文序列外的单个字符没有计入.由此可以发现ans有两部 阅读全文
posted @ 2021-03-17 12:03 acmloser 阅读(67) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 递推思路: 套区间dp模板,划分集合的时候分为增加或者减少 f[i][j]为当前区间为[i,j]时变为回文串的最小花费. 就和密码脱离那道题差不多,if s[i] = s[j] f[i][j] = f[i+1][j-1]. else f[i][j] = min(f[i+1] 阅读全文
posted @ 2021-02-18 23:26 acmloser 阅读(47) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 这道题可以想到P4170涂色和Acwing 编辑距离的结合. 错误思路: 如果直接按a[i]==b[i]与a[j]==b[j]划分的话(实际上a[i]==b[i]与j可以合并),就会少了考虑b连续的条件.使得次数增加了. 错误思路2: 将a[i]==a[j]&&b[i]== 阅读全文
posted @ 2021-02-12 05:01 acmloser 阅读(58) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 转移方程没想出来,思路参考大佬们的题解 错误思路: 本题主要难在[i,j]区间取走某一个数k时,我们要考虑继续往后取还是往前取,如果取前面的就只能取尾端,这就与我们一开始的子结构不符.所以此思路设置间断点划分集合行不通. 正确思路: f[i,]表示i~j人走花费的时间.考虑 阅读全文
posted @ 2021-02-12 02:16 acmloser 阅读(72) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 这题没做出来,要不我还是别学OI了... 思路: f[i][j]表示[i,j]区间内取得的最小值.集合划分就是以中断点为标准,k = i+1,i+2...j-1...f[i][j] = min(f[i][k]+f[k][j]+a[i]*a[k]*a[j]) 为什么是a[i] 阅读全文
posted @ 2021-02-11 22:48 acmloser 阅读(31) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp+记忆化搜索(可有可无) 本蒟蒻是完全没思路...参考大佬的代码 参考大佬的思路: 参考括号匹配的dp题,这道题也是分为(())和()()型.但dp数组有所不同,根据()左右括号颜色的不同,里层或者断点f[i,k]会有不同方案数.以(())为例,14颜色的不同使得里层对应的方 阅读全文
posted @ 2021-02-11 21:02 acmloser 阅读(51) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 区间dp的题想重写一遍,tm学了和没学一样,前几天都在睡,根本没刷题TAT 思路: 本道题要想到由局部最优解推导整体最优解,为什么能推到呢?首先f[i][j]表示[i,j]区间内要穿衣服的最少数量,在[i,j]区间内,枚举断点,由更小的最优解得到[i,j]区间的最优解.如果 阅读全文
posted @ 2021-02-11 16:24 acmloser 阅读(39) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 思路: 和矩阵取数游戏P1005(本题的加强版)不能说很像,简直就是一模一样.f[l][r]区间表示卖掉[l,r]区间的最大收益,但是我们只能买两边的值,因此分为两类,卖l和卖r 1 #include <iostream> 2 #include <cstdio> 3 #in 阅读全文
posted @ 2021-02-11 13:44 acmloser 阅读(67) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 思路: f[i][j]为涂色[i,j]区间的最少次数,按s[i]与s[j]的关系划分集合,如果s[i]!=s[j],我们枚举断点,f[i][j] = f[i][k]+f[k+1][j].如果s[i]==s[j],答案不是f[i+1][j-1]+1,这个方程不能处理全都相等的 阅读全文
posted @ 2021-02-11 13:23 acmloser 阅读(89) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间dp 思路: f[i][j]代表[i,j]合成后的最大值,根据题意,只有当f[i][k]=f[k+1][j]时,才能合并,即f[i][j] = max(f[i][j],f[i][k]+1).这道题求的是合并过程中的最大值,因此答案不一定是f[1][n]. 注意:根据题意,只有当a 阅读全文
posted @ 2021-02-11 02:16 acmloser 阅读(41) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间DP 思路: 与上题区别在于()是一类,()[]也是一类,两类需要分别处理,第一类和上题一样处理,分11 10 01 00(i,j是否在里面)讨论,第二类分为第一个括号序列和右边其他的括号序列,因为第一个括号序列无法表达,只能用包含它的f[i,k],所以第二类是f[i,k]+f[ 阅读全文
posted @ 2021-02-10 20:11 acmloser 阅读(75) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间DP+线性dp 思路一: 正向求解,f[i][j]表示[i,j]区间内应该删去的字符数.要注意的是如果i>j,那么为不合法区间,设置f[i][j] = 0.i = j,单个字符一定回文,f[i][j] = 0.接下来就是划分集合:s[i]=s[j]可缩小到f[i+1,j-1].如 阅读全文
posted @ 2021-02-10 15:49 acmloser 阅读(56) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:区间DP 这道题是能量项链的扩展... 思路: 在多边形内任取一条边,这条边一定属于某个三角形,划分情况随着三角形的顶点位置变化而变化.当选定一个三角形时,多边形被三角形分为两个部分,这两个部分是完全独立的,即f[i][j]表示的是i,j形成的多边形内划分三角形的情况,f[i][j] 阅读全文
posted @ 2021-02-10 10:58 acmloser 阅读(104) 评论(0) 推荐(0) 编辑