洛谷 P2331 [SCOI2005]最大子矩阵

PS:如果读过题了可以跳过题目描述直接到题解部分

提交链接:洛谷 P2331 [SCOI2005]最大子矩阵

题目

题目描述

这里有一个 n*m 的矩阵,请你选出其中 k 个子矩阵,使得这个 k 个子矩阵分值之和最大。注意:选出的 k 个子矩阵不能相互重叠。

输入格式

第一行为 n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的分值的绝对值不超过 32767 )。

输出格式

只有一行为 k 个子矩阵分值之和最大为多少。

样例

样例输入

3 2 2
1 -3
2 3
-2 3

样例输出

9

题解

只有一列

对于只有一列的情况,我们只需要考虑三种情况,首先是当前数字选还是不选,选的话是与上一个子矩阵合并还是重新开启一个子矩阵。

因此,我们可以用一个三维数组来进行状态转移:dp[i][j][0/1]表示前 i 行有 j 个子矩阵且当前行选(1)或不选(0)。

不选的话,无论上一行是什么情况其实都不影响,所以可以直接转移:dp[i][j][0]=max(dp[i-1][j][0],dp[i-1][j][1])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月半流苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值