区间DP
母题
令
考虑转移就是 merge
可以用前缀和。
1(NO.4)
考虑若两端点相等,那么可以连着,即
2(NO.5)
比较麻烦,类似于母题,但是需要加一些特殊处理,而且边界。
3(NO.69)
转移有很多。
首先如果
其次就是类似于母题的转移。
对于上面那个,可以理解为覆盖的顺序是可以灵活调动的,而第三个并不符合这一点。
AcWing 479. 加分二叉树
这道题是区间DP的灵活运用,表示的是中序遍历对应的区间,众所周知,中序遍历最中间的是根,而且加分时也是以根为分界计算的,所以划分依据就是根的位置。最后通过枚举根的位置划分,dfs找的过程复杂度为
P4563 [JXOI2018] 守卫
误导性极强,但是答案的求解是区间,所以是区间DP,右端点不断右移,左端点往回扫。
上下序列
设计很一般,还是考虑每次新加入两个数与
CF149D
状态:基本信息+题目要求的三种颜色
转移:
- 边界,
。 - 包含。
- 并列。
括号序列
CF149D对本题有借鉴意义,转移、状态有一定相似度。我们需要考虑用状态存储几种类型的字符串,然后才能转移,而且转移还要分类在这几类中互相转化。
A 魔力屏障
状态:基本状态+考虑到法力值小加入状态中。
转移考虑两次能量波的使用,合并区间,故用区间DP。
洗车
状态设计上考虑到如果那样设计会出现反悔,所以修改状态。由于会选择这些店中最便宜的一个进行一次消费,所以状态里会增加一维最小值。合并区间时是
51nod-3972-战斗队形
本题关键在于如果基本状态交换信息就不能存储,很麻烦,所以我们存储最值,这样就可以方便的往左边和右边扩展,或者同时往两边推进,交换。
总结
左端点倒着枚举,右端点顺着枚举可以保证大区间用到小区间信息时都已经求出
区间 DP
,状态必须有区间,基本的题都有边界的处理(如1,3中相等的情况,2中一匹、两匹,以及1,2中合并的处理),当然必不可少的是区间的合并。
发现小区间的答案可以转移到大区间,如果转移可以分类就要分类转移,如果边界的类型不同,可能需要增加一维记录类型。划分点可以是在区间上的,也可以树上的根节点,反正都是中间的部分。
答案求解或者某个点会有提示。
最优解可能用到贪心思维。
状态里除了区间信息如果不够需要增加其他维度,大部分情况下只需要记录区间信息,且普遍复杂度为
难度在于答案的计算或者答案转移的条件判断。
括号序列的题关键:并列、包含两种关系分类转移。
合并区间时有包含当前点(属于左区间或右区间)、当前点单独一部分、刨除当前点的情况,具体情况具体分析。
本文作者:wscqwq
本文链接:https://www.cnblogs.com/wscqwq/p/17668705.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步