Description

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

Input

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

Output

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

题解:
  看了半天,突然发现,m小于等于2啊。
  然后就乱dp一波,除了转移写起来很麻之外,就没什么了。
  令f[i][j][k]表示当前第i行,以选中j个矩阵,当前行的取法为k的得分数,(取法只有5种啦)。
代码:
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
}
#define MN 105
#define inf 0x7f
int n,m,k,a[MN][],ans;
int f[MN][][];
void rw(int &x,int y){if(y>x)x=y;}
int main(){
n=read(),m=read(),k=read();
register int i,j;
for(i=;i<=n;i++)for(j=;j<=m;j++) a[i][j]=read();
if(m==){
for(i=;i<=n;i++) for(j=;j<=k;j++){
rw(f[i][j][],f[i-][j][]);
rw(f[i][j][],f[i-][j][]);
rw(f[i][j][],f[i-][j][]+a[i][]);
rw(f[i][j][],f[i-][j-][]+a[i][]);
}
printf("%d\n",max(f[n][k][],f[n][k][]));
}
else{
memset(f,-inf,sizeof f);
for(i=;i<=n;i++)for(j=;j<=k;j++) f[i][j][]=;
for(i=;i<=n;i++)for(j=;j<=k;j++){
for(int h=;h<=;h++) rw(f[i][j][],f[i-][j][h]); f[i][j][]=max(f[i-][j][],f[i-][j][])+a[i][];
f[i][j][]=max(f[i-][j][],f[i-][j][])+a[i][];
rw(f[i][j][],f[i-][j-][]+a[i][]);
rw(f[i][j][],f[i-][j-][]+a[i][]);
rw(f[i][j][],max(f[i-][j-][],f[i-][j-][])+a[i][]);
rw(f[i][j][],max(f[i-][j-][],f[i-][j-][])+a[i][]); f[i][j][]=max(f[i-][j-][],f[i-][j][])+a[i][]+a[i][];
rw(f[i][j][],max(f[i-][j-][],f[i-][j-][])+a[i][]+a[i][]);
rw(f[i][j][],f[i-][j-][]+a[i][]+a[i][]); f[i][j][]=f[i-][j][]+a[i][]+a[i][];
rw(f[i][j][],max(f[i-][j-][],f[i-][j-][])+a[i][]+a[i][]);
if(j>=) rw(f[i][j][],max(f[i-][j-][],f[i-][j-][])+a[i][]+a[i][]);
}
ans=-1e12;
for(i=;i<=;i++) rw(ans,f[n][k][i]);
printf("%d\n",ans);
}
return ;
}

来自PaperCloud的博客,未经允许,请勿转载,TKS!

[SCOI2005][BZOJ 1084]最大子矩阵的更多相关文章

  1. BZOJ 1084 最大子矩阵

    http://www.lydsy.com/JudgeOnline/problem.php?id=1084 思路:分m=1和m=2操作 #include<algorithm> #includ ...

  2. BZOJ 1084 最大子矩阵 dp

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1084 题目大意: 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分 ...

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

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

  4. [BZOJ 1084] [SCOI2005] 最大子矩阵 【DP】

    题目链接:BZOJ - 1084 题目分析 我看的是神犇BLADEVIL的题解. 1)对于 m = 1 的情况, 首先可能不取 Map[i][1],先 f[i][k] = f[i - 1][k];   ...

  5. BZOJ 1084: [SCOI2005]最大子矩阵 DP

    1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ...

  6. 【BZOJ 1084】 1084: [SCOI2005]最大子矩阵 (DP)

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

  7. 【BZOJ 1084】 [SCOI2005]最大子矩阵(DP)

    题链 http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩 ...

  8. BZOJ 1084 [SCOI2005]最大子矩阵 - 动态规划

    传送门 题目大意: 从矩阵中取出k个互不重叠的子矩阵,求最大的和. 题目分析: 对于m=1,直接最大m子段和. 对于m=2: \(dp[i][j][k]\)表示扫描到第一列i和第2列j时选取了k个矩阵 ...

  9. BZOJ: 1084: [SCOI2005]最大子矩阵

    NICE 的DP 题,明白了题解真是不错. Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1228  Solved: 622[Submit][Stat ...

随机推荐

  1. SharePoint中用Power shell命令设置文档库列表的权限

    首先停止继承权限 $web = Get-PnPweb $spoList= Get-PnPList "Testlist" -Web $web (注释:获取对象)$spoList.Br ...

  2. ColdFusion 编写WebService 示例

    1.开发 Web Services,编写cfcdemo.cfc组件,代码如下: <cfcomponent style ="document" namespace = &quo ...

  3. 安装License需要重启

    "only commands for license handling are allowed in current state" Can you confirm if licen ...

  4. 昨日万圣节ABAP怪兽级代码谜团,公布答案啦

    首先非常感谢大家在周末还抽出宝贵的时间耗在Jerry昨天发布的文章 一段让人瑟瑟发抖的ABAP代码 上面. 虽然Jerry在文末开玩笑的声称,只有文章阅读量上千或者评论数超过50,才公布答案.其实这只 ...

  5. 【JUC】5.线程池—Executor

    创建线程池可以分为三种方式: 1. 通过ThreadPoolExecutor的构造方法,创建ThreadPoolExecutor的对象,即一个线程池对象: 此构造方法,一共7个参数,5个必须参数,2个 ...

  6. spark 机器学习 随机森林 原理(一)

    1.什么是随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决 策树之间是没有关联的.在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分 ...

  7. python3+django+mysql

    django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,如果使用python3.x版本时,django连接mysql的方法 1.使用pymysql替换MySQ ...

  8. c# 写入文本文件

  9. mysql学习之基础篇08 UTF8编码

    这次我们来说一下在Mysql中的编码问题: 我们知道应用于计算机的最早的字符集是ASCII,它所组成的编码是ASCII编码:由于对于其他国家来说它所容纳的字符个数比较少,后来就出现了ANSI字符集,它 ...

  10. 解决Centos7安装python3后pip工具无法使用

    问题描述: Centos7安装python3,正常流程全部配置完成,python3,pip3的软链接也建立了 但是python3可以正常使用,而pip3报错,无法找到文件或目录 解决方法: which ...