
ACM/ICPC_区间DP
just_sort
Acdream.
展开
-
Codeforces 437E The Child and Polygon(区间DP) 2017/1/10
题目链接:见这里 题意:现在有一个简单多边形,问有多少种划分方式,使得这个多边形被划分成数个面积不为0的三角形。 每个划分方式需要满足以下条件: .每个三角形的顶点都必须是原多边形的一个顶点。 .多边形的每个边不能同时作为多个三角形的边。 .任意两个三角形面积交为0,所有三角形面积和为多边形面积。 .每个三角形都必须在多边形内部 .三角形的每一边必须包含多边形的两个顶点 输出划分方案原创 2017-01-13 22:50:02 · 593 阅读 · 0 评论 -
BZOJ 1260: [CQOI2007]涂色paint 区间DP
Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色。你希望把它的5个单位长度分别涂上红、绿、蓝、绿、红色,用一个长度为5的字符串表示这个目标:RGBGR。 每次你可以把一段连续的木版涂成一个给定的颜色,后涂的颜色覆盖先涂的颜色。例如第一次把木版涂成RRRRR,第二次涂成RGGGR,第三次涂成RGBGR,达到目标。 用尽量少的涂色次数达到目标。 Input 输入仅一行,包原创 2017-04-16 15:35:12 · 563 阅读 · 0 评论 -
BZOJ 1090: [SCOI2003]字符串折叠 区间动归
Description折叠的定义如下: 1. 一个字符串可以看成它自身的折叠。记作S S 2. X(S)是X(X>1)个S连接在一起的串的折叠。记作X(S) SSSS…S(X个S)。 3. 如果A A’, BB’,则AB A’B’ 例如,因为3(A) = AAA, 2(B) = BB,所以3(A)C2(B) AAACBB,而2(3(A)C)2(B)AAACAAACBB 给一个原创 2017-01-31 19:20:26 · 515 阅读 · 0 评论 -
BZOJ 1055: [HAOI2008]玩具取名 记忆化搜索,DP
Description 某人有一套玩具,并想法给玩具命名。首先他选择WING四个字母中的任意一个字母作为玩具的基本名字。然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长。 现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的。 Input 第一行四个整数W、I、N、G。表示每一个字母能由几种两个字母所替代。原创 2017-01-22 22:52:53 · 483 阅读 · 0 评论 -
BZOJ 1032: [JSOI2007]祖码Zuma 区间DP
题目链接:见这里 解题方法: 区间DP。首先我们把连续相同的珠子都缩在一起 令f[i][j]表示从i开始的j个珠子的最小消除次数 初值 f[i][1]=cnt[i]==1?2:1 然后对于每个区间,我们枚举中间点,拆成两半求和 如果这个区间两端点颜色相同,我们还可以把中间消掉,然后两边再补射1或0个。 但是这个题目数据是有问题的,按照上面的方法是可以AC,但是有反,具体可以参考下这个博客:见原创 2017-01-19 20:36:06 · 363 阅读 · 0 评论 -
ZOJ 3537 Cake (区间DP6)
题目链接:见这里 题意:求将一个凸n多边形分成n-2个三角形的最小费用 分析:这个题首先要判是不是凸包,如果是凸包,那么从逆时针开始枚举分割的起点,和终点,注意起点从n - 3开始,确定起点和终点之后,枚举中间点转移。 dp[i][j]代表将凸包的子多边形i j分成(j−i−1)个三角形的最优答案dp[i][j]代表将凸包的子多边形i~j分成(j - i -1)个三角形的最优答案 转移dp[原创 2017-01-10 21:50:52 · 507 阅读 · 0 评论 -
POJ 3280 Cheapest Palindrome (区间DP5)
题意: 给出一个由m中字母组成的长度为n的串,给出m种字母添加和删除花费的代价,求让给出的串变成回文串的代价。 分析:我们知道添加最少的字母让其回文是经典的DP。可以转化为LCS来解,即枚举中间点,计算前后的最长公共子序列长度MAX,最后总长度减掉2倍MAX就可以了。那么这个题多了一个价值,我们不能这样做了,那么我们怎么做呢?考虑这么一个区间DP。DP[i][j]代表区间i,j是回文的最小代价,那原创 2017-01-10 20:17:30 · 796 阅读 · 0 评论 -
nyoj746 整数划分 (区间DP4)
题意:给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积 分析:根据区间dp的思想,我们定义dp [ i ] [ j ]为从开始到 i 中加入 j 个乘号得到的最大值。那么我们可以依次计算加入1—-m-1个乘号的结果而每次放入x个乘号的最大值只需枚举第x个乘号的放的位置即可dp[i][j]=MAX(dp[i][j],dp[k][j−1]∗a[k+1原创 2017-01-10 17:39:13 · 1013 阅读 · 0 评论 -
POJ 1141 Brackets Sequence (区间DP3)
题意:给出一串由‘(‘)’‘ [ ’ ’ ] ‘组成的串,让你输出添加最少括号之后使得括号匹配的串。 分析:那么假如我们知道任意 i 到 j 从哪儿插入分点使得匹配添加括号最少。那么我们定义ans[i][j]表示 i 到 j 从哪儿分开使得匹配添加括号最少,如果i和j匹配我们可以让ans[i][j] = -1;我们发现在我们之前更新dp[ i ] [ j ] 的时候如果中间点k使得if ( dp原创 2017-01-10 17:02:22 · 522 阅读 · 0 评论 -
POJ 2955 Brackets (区间DP2)
题目链接:点击打开 题意:给出一串的只有‘(’ ‘)’ ‘[‘ ‘]’四种括号组成的串,让你求解需要最少添加括号数让串中的所有括号完全匹配。 分析:定义dp [ i ] [ j ] 为串中第 i 个到第 j 个括号的最大匹配数目那么我们假如知道了 i 到 j 区间的最大匹配,那么i+1到 j+1区间的是不是就可以很简单的得到。那么 假如第 i 个和第 j 个是一对匹配的括号那么dp [ i原创 2017-01-10 16:40:09 · 487 阅读 · 0 评论 -
NYOJ 737 石子归并问题 (区间DP1)
题目链接:见这里题意:中文题目解题方法:基础区间DP。要求n个石子归并,我们根据dp的思想划分成子问题,先求出每两个合并的最小代价,然后每三个的最小代价,依次知道n个。定义状态dp [ i ] [ j ]为从第i个石子到第j个石子的合并最小代价。则有:dp[i][j]=min(dp[i][k]+dp[k+1][j])dp [ i ] [ j ] = min(dp [ i ] [ k ] + dp [原创 2017-01-10 14:36:52 · 454 阅读 · 0 评论 -
BZOJ 1261: [SCOI2006]zh_tree 区间DP
Description 张老师根据自己工作的需要,设计了一种特殊的二叉搜索树。他把这种二叉树起名为zh_tree,对于具有n个结点的zh_tree,其中序遍历恰好为(1,2,3,…,n),其中数字1,2,3,…,n 是每个结点的编号。n个结点恰好对应于一组学术论文中出现的n个不同的单词。第j个单词在该组论文中出现的次数记为dj,例如,d2=10表示第2个结点所对应的单词在该组论文中出现了10次。设原创 2017-04-16 17:12:16 · 905 阅读 · 0 评论