随笔分类 -  区间dp

Blocks
摘要:题意:n个带颜色的方块,每次可以选择一段颜色相同的连续方块消除得分为消去块数的平方,消除所有方块得到的最大分数。分析:区间dp,dp[i][j][k] 表示,从i到j块且j后面有k块与第j块的颜色一样。dp[l][r][k] = max(dp[l][r][k],dfs(l,i,k+1)+dfs(i+... 阅读全文

posted @ 2015-10-25 22:08 积跬步、至千里 阅读(173) 评论(0) 推荐(0)

Folding
摘要:题意:给定一个串,求能化成的最短循环节串(把重复字符串转化成循环节形式)分析:不是太好想,如果让求最短长度还好,dp[i][j],表示区间[i,j]化成的最小长度,dp[i][j]=min(dp[i][k]+dp[k+1][j]),即可但现在要求这个串不知怎么做,想着串能不能跟着转移啊,就用str[... 阅读全文

posted @ 2015-10-25 20:37 积跬步、至千里 阅读(198) 评论(0) 推荐(0)

Minimax Triangulation
摘要:题意:按顺序给定一些点,把这些点分割为n - 2个三角形,花费为最大三角形面积,求最小花费分析:区间dp,dp[i][j]表示完成区间[i,j]最小花费,dp[i][j]=min(dp[i][j],max(dp[i][k],dp[k][j],area(p[i],p[j],p[k]);(area表示三... 阅读全文

posted @ 2015-10-18 20:43 积跬步、至千里 阅读(270) 评论(0) 推荐(0)

Brackets sequence
摘要:题意:给你一个括号序列(有中小括号),求出以给定序列为子序列的最小合法括号序列。分析:非常经典,以前做过相似一道题,用区间dp,但怎么把这个序列求出来没想出来。dp[i][j]表示区间i-j是序列合法要增加括号的最小数量,并pos[i][j]表示i-j在哪个位置断开最小,最后通过递归位置打印出答案。... 阅读全文

posted @ 2015-10-12 18:24 积跬步、至千里 阅读(316) 评论(0) 推荐(0)

Cutting Sticks
摘要:题意:l长的木棒,给出n个切割点,每切一次的费用为切得木棒的长度,完成切割的最小费用。分析:区间dp入门,区间dp的特点,一个大区间的解可以转换成小区间的解组合起来,每个切割点的标号代表边界。#include #include #include #include #include #include ... 阅读全文

posted @ 2015-10-11 21:49 积跬步、至千里 阅读(164) 评论(0) 推荐(0)

导航