题面

对于m==1和m==2两种状态进行不同的dp;

设sum[i][1]表示第一列的前缀和,sum[i][2]表示第二列的前缀和;

sum[i][1]=sum[i-1][1]+a[i][1];

sum[i][2]=sum[i-1][2]+a[i][2];

当m=1时,

设f[i][j]表示前i个数选择j个区间所得到的最大值;

那么枚举0<=p<i, f[i][j]=max(f[i-1][j],f[p][j-1]+sum[i][1]-sum[p][1]);

答案就是f[n][k];

当m=2时,与上面的类似;

f[i][j][p]表示第一列选择前i个数,第二列选择前j个数,总共选择p个矩阵的最大值;

那么枚举0<=p<i,f[i][j][p]=max(f[i-1][j][p],f[i][j-1][p],f[i][j][p],f[l][j][p-1]+sum[i][1]-sum[l][1],f[i][l][p-1]+sum[j][2]-sum[l][2],f[l][l][p-1]+sum[i][2]+sum[i][1]-sum[l][2]-sum[l][1]);

答案就是f[n][n][k];

#include <bits/stdc++.h>
using namespace std;
int n,m,K;
int a[][];
int sum[][];
int g[][];
void solve1()
{
for(int k=;k<=K;k++){
for(int i=;i<=n;i++){
g[i][k]=g[i-][k];
for(int j=;j<i;j++){
g[i][k]=max(g[j][k-]+sum[i][]-sum[j][],g[i][k]);
}
}
}
cout<<g[n][K];
}
int f[][][];
void solve2()
{
for(int k=;k<=K;k++){
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
f[i][j][k]=max(f[i-][j][k],f[i][j-][k]);
for(int l=;l<i;l++){
f[i][j][k]=max(f[i][j][k],f[l][j][k-]+sum[i][]-sum[l][]);
}
for(int l=;l<j;l++){
f[i][j][k]=max(f[i][j][k],f[i][l][k-]+sum[j][]-sum[l][]);
}
if(i==j){
for(int l=;l<i;l++){
f[i][j][k]=max(f[i][j][k],f[l][l][k-]+sum[i][]+sum[i][]-sum[l][]-sum[l][]);
}
}
}
}
}
cout<<f[n][n][K];
}
int main()
{
cin>>n>>m>>K;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=;i<=n;i++){
sum[i][]=sum[i-][]+a[i][];
sum[i][]=sum[i-][]+a[i][];
}
if(m==){
solve1();
}
else{
solve2();
}
}
/*
3 1 2
1
-2
2
*/

洛谷 P2331 最大子矩阵 题解的更多相关文章

  1. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

  2. 【洛谷P3960】列队题解

    [洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...

  3. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  4. 洛谷P1577 切绳子题解

    洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格 ...

  5. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  6. 洛谷 P1220 关路灯 题解

    Description 有 $n$ 盏路灯,每盏路灯有坐标(单位 $m$)和功率(单位 $J$).从第 $c$ 盏路灯开始,可以向左或向右关闭路灯.速度是 $1m/s$.求所有路灯的最少耗电.输入保证 ...

  7. 洛谷 P2331 [SCOI2005]最大子矩阵

    洛谷 这一题,乍一眼看上去只想到了最暴力的暴力--大概\(n^4\)吧. 仔细看看数据范围,发现\(1 \leq m \leq 2\),这就好办了,分两类讨论. 我先打了\(m=1\)的情况,拿了30 ...

  8. 【洛谷P3410】拍照题解(最大权闭合子图总结)

    题目描述 小B有n个下属,现小B要带着一些下属让别人拍照. 有m个人,每个人都愿意付给小B一定钱让n个人中的一些人进行合影.如果这一些人没带齐那么就不能拍照,小B也不会得到钱. 注意:带下属不是白带的 ...

  9. [BZOJ 3039&洛谷P4147]玉蟾宫 题解(单调栈)

    [BZOJ 3039&洛谷P4147]玉蟾宫 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. ...

随机推荐

  1. python 正则表达式实例:

    #!/usr/bin/python import re line = "Cats are smarter than dogs" matchObj = re.match( r'(.* ...

  2. CF1213F Unstable String Sort

    题目链接 问题分析 题目实际上是一堆大于等于的约束.观察这\(2n-2\)个约束.第一组可以将要求的排成一个不降的序列,然后第二组就是在第一组的基础上再添加条件. 不妨设第一组生成的不降序列是\(\{ ...

  3. JavaScript插件制作-tab选项卡

    JavaScript插件制作练习-鼠标划过选项卡切换图片 <!DOCTYPE html> <html> <head> <meta charset=" ...

  4. [CSP-S模拟测试]:小Y的图(最小生成树+LCA)

    题目传送门(内部题131) 输入格式 第一行三个整数$n$.$m$和$Q$. 接下来$m$行每行三个整数$x$.$y$.$z$($1\leqslant x,y\leqslant n,1\leqslan ...

  5. web服务基础

    Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...

  6. 关于int,bool,str

    今日主要内容 基本数据类型(int,bool,str) 1.基本数据数据类型: int 整数 str 字符串. 一般不存放大量的数据 bool 布尔值. 用来判断. True, False list ...

  7. 微信小程序底部菜单栏的使用方法

    1.找到项目根目录的配置文件 app.json,在配置文件中加入配置代码.例如: "tabBar": { <!--底部的导航配置属性--> "color&qu ...

  8. SecureCRT For Mac安装、破解、使用详细总结

    转:https://blog.csdn.net/so_geili/article/details/83315852#_4 https://www.sednax.com/download.php

  9. 查询Oracle表空间使用情况

    ,),'990.99')||'%' "使用比(%)",F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最大块(M)" ...

  10. C# 隐藏显示桌面图标

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...