题目传送门

DP。

但要分类讨论,对于M=1和M=2的情况分别讨论。

1>M=1

  设f[i][j]表示选了i个矩阵,到第j位。N^3转移。(前缀和)

2>M=2

  设f[i][j][k]表示选了i个矩阵,第一列到i,第二列到j。

  枚举i,j,k后枚举j1和k1表示选一行的情况。

  如果j==k则可以从之前的两行一起转移。

code:

/**************************************************************
Problem: 1084
User: yekehe
Language: C++
Result: Accepted
Time:112 ms
Memory:1476 kb
****************************************************************/ #include <cstdio>
#include <algorithm>
using namespace std; int f[][][];
int N,M,K,a[][],sum[][];
int F[][];
int S[]; void work()
{
for(int i=;i<=N;i++){scanf("%d",&S[i]);S[i]+=S[i-];}
for(int i=;i<=K;i++)for(int j=;j<=N;j++)F[i][j]=-1e9;
for(int i=;i<=K;i++)
for(int j=;j<=N;j++){
F[i][j]=F[i][j-];
for(int k=;k<j;k++){
F[i][j]=max(F[i][j],F[i-][k]+S[j]-S[k]);
}
}
printf("%d",F[K][N]);
return ;
} int main()
{
scanf("%d%d%d",&N,&M,&K);
if(M==)return work(),;
for(int i=;i<=N;i++)
for(int j=;j<=M;j++){
scanf("%d",&a[i][j]);
sum[i][j]=sum[i-][j]+a[i][j];
}
for(int i=;i<=K;i++)for(int j=;j<=N;j++)for(int k=;k<=N;k++)f[i][j][k]=-1e9;
for(int i=;i<=K;i++)
for(int j=;j<=N;j++)
for(int k=;k<=N;k++){
f[i][j][k]=max(f[i][j-][k],f[i][j][k-]);
for(int j1=;j1<j;j1++)
f[i][j][k]=max(f[i][j][k],f[i-][j1][k]+sum[j][]-sum[j1][]);
for(int k1=;k1<k;k1++)
f[i][j][k]=max(f[i][j][k],f[i-][j][k1]+sum[k][]-sum[k1][]);
if(j==k)
for(int h=;h<j;h++)
f[i][j][k]=max(f[i][j][k],f[i-][h][h]+sum[j][]-sum[h][]+sum[k][]-sum[h][]);
}
printf("%d",f[K][N][N]);
return ;
}

BZOJ1084_最大子矩阵_KEY的更多相关文章

  1. ACM 中 矩阵数据的预处理 && 求子矩阵元素和问题

            我们考虑一个$N\times M$的矩阵数据,若要对矩阵中的部分数据进行读取,比如求某个$a\times b$的子矩阵的元素和,通常我们可以想到$O(ab)$的遍历那个子矩阵,对它的各 ...

  2. [BZOJ1127][POI2008] KUP子矩阵

    Description 给一个n*n的地图,每个格子有一个价格,找一个矩形区域,使其价格总和位于[k,2k] Input 输入k n(n<2000)和一个n*n的地图 Output 输出矩形的左 ...

  3. 【SCOI2005】 最大子矩阵 BZOJ 1084

    Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤2 ...

  4. 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵

    题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: 每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K 接下 ...

  5. HDU1559 最大子矩阵 (二维树状数组)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1559 最大子矩阵 Time Limit: 30000/10000 MS (Java/Others)  ...

  6. bzoj1057: [ZJOI2007]棋盘制作--最大子矩阵

    既然要求最大01子矩阵,那么把应该为0的位置上的数取反,这样就变成求最大子矩阵 最大子矩阵可以用单调栈 #include<stdio.h> #include<string.h> ...

  7. hdu 1559 最大子矩阵

    最大子矩阵 Time Limit: 30000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  8. NOIP2014pj子矩阵[搜索|DP]

    题目描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第2.4行和第2.4.5列交叉位置的元素 ...

  9. openjudge1768 最大子矩阵[二维前缀和or递推|DP]

    总时间限制:  1000ms 内存限制:  65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的 ...

随机推荐

  1. scrapy简单入门及选择器(xpath\css)

    简介 scrapy被认为是比较简单的爬虫框架,资料比较齐全,网上也有很多教程.官网上介绍了它的四种安装方法,PyPI.Conda.APT.Source,我们只介绍最简单的安装方法. 安装 Window ...

  2. [翻译] TCBlobDownload

    TCBlobDownload TCBlobDownload uses NSOperations to download large files (typically videos, music... ...

  3. [翻译] NSDate-TimeAgo

    NSDate-TimeAgo https://github.com/kevinlawler/NSDate-TimeAgo NSDate+TimeAgo has merged with DateTool ...

  4. 渐变显示渐变消失的BackgroundView

    渐变显示渐变消失的BackgroundView 效果如下: 源码: BackgroundView.h 与 BackgroundView.m // // BackgroundView.h // Test ...

  5. 51 nod 1682 中位数计数

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1682 1682 中位数计数 基准时间限制:1 秒 空间限制: ...

  6. python第十八课——常用内置函数

    常用内置函数:round(): print(round(3.14),round(3.99)) print(round(3145.926,-2),round(413.575,2)) abs(): pri ...

  7. springboot 配置jpa启动报Error processing condition on org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration.pageableCustomizer

    springboot +gradle 配置jpa启动报Error processing condition on org.springframework.boot.autoconfigure.data ...

  8. Docker镜像搭建Linux下samba共享目录

    Samba 是 SMB/CIFS 网络协议的重新实现, 它作为 NFS 的补充使得在 Linux.OS/2.DOS 和 Windows 系统中进行文件共享.打印机共享更容易实现.SMB协议是客户机/服 ...

  9. 1054. [HAOI2008]移动玩具【BFS】

    Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移 ...

  10. BZOJ2435:[NOI2011]道路修建 (差分)

    Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1条双向道 ...