区间DP
Fb_by
这个作者很懒,什么都没留下…
展开
-
UVA 11552 Fewest Flops 【区间dp】
题意:将一个字符串分成若干块,每块大小为k,保证串的长度是k的倍数。 每块的元素可以任意摆放,但是块与块之间的位置不变。摆放完后,将连续相同的字符看成一个,问最少多少个。 分析:定义dp[i][j]为第i块以该块的第j个元素结尾。 状态转移: dp[i][j]=min(dp[i][j],dp[i-1][p]+cnt-1);//如果前一块以p结尾,而第i块不以p结尾,那么这里就可以合并一种字原创 2016-03-29 16:02:25 · 242 阅读 · 0 评论 -
UVA 10891【区间dp】
题意: 给定n个数字,A和B可以从这串数字的两端任意选数字,一次只能从一端选取。 并且A B每一步走的都是最优的。 在A先选择的情况下,求A,B最后差值最大是多少。 分析:无论怎么取,剩下的序列都是原序列的连续子序列。将这个区间可以分割成若干对区间,找出这些区间的最小值,剩下的就是a在当前所取最大值。 转移方程为:dp[i][j]=sum[j]-sum[i-1]-min(dp[i+1][原创 2016-03-23 22:27:04 · 269 阅读 · 0 评论 -
poj2955 Brackets 【区间dp】
链接:http://poj.org/problem?id=2955 题意:给你一串由“( )”“[ ]”组成的括号串,现在问你最多的括号匹配。 分析:枚举一个长度,看看这个区间内有多少能匹配的括号,用dp[i][j]表示,s[i]和s[j]能匹配时dp[i][j]=dp[i+1][j-1]+2,然后枚举区间内的点,两段区间合并就可以找到最大的匹配。 代码: #include #incl原创 2016-07-18 16:16:04 · 200 阅读 · 0 评论 -
nyoj746 整数划分(四)【区间dp】
链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=746 分析:a[i][j]表示i到j的数,dp[i][j]表示,长度为i插了j个乘号的最大值, 转移:dp[i][j]=max(dp[i][j],dp[k][j-1]*a[k+1][i]) 表示在k的位子插一个乘号。 代码: #include #include #include #原创 2016-07-18 16:27:50 · 472 阅读 · 0 评论 -
poj1651 Multiplication Puzzle 【区间dp】
链接:http://poj.org/problem?id=1651 题意:有n个数,现在要删除【2,n-1】里的数,每次删除的代价是它和左边右边的乘积,求出最少代价。 分析:dp[i][j]表示删除了(i,j)的某个数的最小代价,转移方程: dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+a[i]*a[j]*a[k]); k为枚举要删除的数。 代码: #in原创 2016-07-18 16:33:53 · 201 阅读 · 0 评论