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. kubernetes第八章--NFS PersistentVolume

  2. mysql 数据库 规范

    目录 mysql 数据库 规范 基础规范 命名规范 表设计规范 字段设计规范 索引设计规范 SQL编写规范 行为规范 mysql 数据库 规范 基础规范 必须使用InnoDB存储引擎 解读:支持事务. ...

  3. 阅读笔记---第三章 Xen信息页

    1.文件/xen/include/public/xen.h 2.第一个数据结构:启动信息页strat_info,启动信息页是GuestOS内核启动时,由Xen映射到GusetOS内存空间的一个物理页面 ...

  4. python(列表函数)

    一.列表函数 1.sort()原址排序 参数默认reverse=False时为正序排序 list1 = [1,3,5,2,1,23,18] list1.sort() print (list1) 当参数 ...

  5. Python——Python安装

    下载地址:https://www.python.org/downloads/windows/ 3.X安装方法: 1. 设置一个自选路径,并将下面的选项打钩.(建议使用根目录) 2. 应用在所有用户中 ...

  6. [ipsec][strongswan]strongswan源码分析--(零)引子

    目录 strongswan sa 资料 编译 启动 进程信息 结构 架构图与插件 配置运行 传统配置方法 新的配置方法 其他配置方法 详细的配置文档 配置示例 用法 加密库 libgmp libcry ...

  7. jmeter生成html报告详解

    Jmeter Dashboard详解 结果面板主要分为Dashboard和Charts两部分.Dashboard对信息进行汇总展示,Charts展示更多详细指标数据. Dashboard Test a ...

  8. 《AlwaysRun!》第七次作业:团队项目设计完善&编码

    项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nwnu-daizh/   这个作业的要求在哪里 https://www.cnblogs.com/nwnu-da ...

  9. 《3+1团队》第九次团队作业:Beta冲刺与验收准备

    1.团队项目github仓库地址链接 https://github.com/HaiYou667/3-1Growingfruits 2.Scrum meeting导航: [Beta]Scrum meet ...

  10. python3.7内置函数整理笔记

    #python3.7 内置函数整理 #abs(x) #返回数字的绝对值. 参数可以是整数或浮点数. 如果参数是复数,则返回其大小 # print(abs(1)) # print(abs(-1)) # ...