前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >区间DP总结

区间DP总结

作者头像
ShenduCC
发布2018-04-26 16:06:18
1.1K0
发布2018-04-26 16:06:18
举报
文章被收录于专栏:算法修养

做了几题区间动态规划的题目,觉得区间动态规划的题目是有点难的。区间DP大概是这一类的动态规划,在一个线性的数据上对区间进行状态转移,dp[i][j]表示i到j的区间。dp[i][j]可以由子区间的状态转移而来,关键是dp[i][j]表示的是什么,然后去找dp[i][j]和子区间的关系。要知道,在求dp[i][j]之前,i到j之间的子区间都已经求出来最优解。 一点一点说吧! 首先我觉得首先区间DP的应用要先想到回文串的,包括一个字符串的最长的非连续的回文串,一个字符串非连续的回文串的数目。因为回文串的特点对应的两端字符是相等的,所以状态是可以转移的,先看一道求一个字符串中回文串的数目: HDU 4632

题解: http://blog.csdn.net/Dacc123/article/details/50886011

接下来就是求回文串的最长的长度问题 HDU 4745 这道题目是在求区间最长的回文串长度升级一下,序列是一条链。这里可以用倍增的方法。状态转移方程: dp[i][j]= max ( dp[i+1][j], max ( dp[i][j-1], ( a[i]==a[j] ? dp[i+1][j-1] + 2 : dp[i+1][j-1] ) ) );就是在dp[i+1][j],dp[i][j-1],dp[i+1][j-1]三个子区间求最大值。

题解: http://blog.csdn.net/dacc123/article/details/50911832

这道题和前面的比较,求最长的长度是在dp[i+1][j],dp[i][j-1],dp[i+1][j-1]三个子区间里进行比较,而求数量,则是把求子区间的和。这两道的题目的子区间只涉及到dp[i+1][j],dp[i][j-1],dp[i+1][j-1],并没有在i到j之间进行区间划分,这是因为回文串的特性。

下面看划分区间的区间DP问题: 题目链接http://poj.org/problem?id=2955 这是一道简单的区间划分dp题目 求最长的匹配括号的长度,划分区间是没有条件的,从i到j区间内任何一点都可以划分,dp[i][j]=max(dp[i][k]+dp[k+1][j]){k=i….j} 题解: http://blog.csdn.net/dacc123/article/details/50906703

题目链接http://poj.org/problem?id=1651 题解: http://blog.csdn.net/dacc123/article/details/50911318

题目链接http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1422 状态转移方程是要在i到j区间之间进行区间划分。你可以从左端点开始,也可以从右端点开始。只有当k等于左端点或者右端点的时候才可以划分。因为这样的话,第k天就不用穿新衣服,少买了一件,这也是得到最优解的关键, 题解: http://blog.csdn.net/dacc123/article/details/50979300

再看这道题目的升级版http://acm.hdu.edu.cn/showproblem.php?pid=2476 在前面的基础上,再进行一次区间DP 题解: http://blog.csdn.net/dacc123/article/details/50799405

再看一道难度增加的区间划分, 题目: http://acm.hdu.edu.cn/showproblem.php?pid=4283 这道题目在划分区间之后,要计算因为状态改变,而改变的不满意值 题解: http://blog.csdn.net/dacc123/article/details/50902212

有时候区间DP的状态要根据题目有不同的形式,不仅是二维数组表示区间,也可以加其他维,表示不同的状态。 题目链接http://blog.csdn.net/dacc123/article/details/50911318 这道题目用来四维数组,另外两维表示左边和右边的颜色种类 题解: http://blog.csdn.net/dacc123/article/details/51002776

题目链接http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3469 三维数组,第三维表示快递小哥在区间的哪一边? 题解: http://blog.csdn.net/dacc123/article/details/51002803

最优三角划分: http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3537 这个题目要先用凸包算法判断凸包,然后再进行区间划分,进行DP 题解: http://blog.csdn.net/dacc123/article/details/50960199

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档