
状压DP
ITCharge
高效率编程,慢节奏生活。
展开
-
HDU1081_To The Max【矩阵压缩】
题目大意:给你一个N,接下来是N*N的矩阵。数有正有负,求最大的子矩阵 和。 思路:1003题是一维的求连续子序列最大和,dp[i] = max(dp[i-1]+a[i],a[i]) 这道题是求二维的子矩阵最大和。考虑将二维转化为一维的。二维数组的每一 行都可以看做一个一维数组。map[i][j]数组上存的是第i行前j列上的和 第k行上,dp[k][i] = max(dp[k][i-1]+map[k][i],map[k][i]),但是这样只能知道 第k行前i个数的最大和是多少,而不知道是第k行上从第几列到第原创 2014-11-26 16:07:41 · 1270 阅读 · 0 评论 -
HDU2845_Beans【不连续的最大子段和】【元素压缩】
题目大意:给你一个矩阵,不能选择每行中相邻的数字,也不能选当前行的上一 行和下一行,问使所选数和最大的值是多少? 思路:用元素压缩的思想。先把2维矩阵降为1维数组。对每行求出不相邻的数字 最大和是多少,把几个数字和缩成一个数。再对所有行求出不相邻的行数字最大 和是多少。 对于每行求出不相邻的数字最大和的状态转移方程为 dp[i+1] = max{吃i达到的最大值,不吃i达到的最大值+第i+1个数}原创 2014-11-04 20:27:11 · 1283 阅读 · 0 评论