[SCOI2005][BZOJ 1084]最大子矩阵
Description
这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵
不能相互重叠。
Input
第一行为n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的
分值的绝对值不超过32767)。
Output
只有一行为k个子矩阵分值之和最大为多少。
#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]最大子矩阵的更多相关文章
- BZOJ 1084 最大子矩阵
http://www.lydsy.com/JudgeOnline/problem.php?id=1084 思路:分m=1和m=2操作 #include<algorithm> #includ ...
- BZOJ 1084 最大子矩阵 dp
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1084 题目大意: 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分 ...
- 【SCOI2005】 最大子矩阵 BZOJ 1084
Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤2 ...
- [BZOJ 1084] [SCOI2005] 最大子矩阵 【DP】
题目链接:BZOJ - 1084 题目分析 我看的是神犇BLADEVIL的题解. 1)对于 m = 1 的情况, 首先可能不取 Map[i][1],先 f[i][k] = f[i - 1][k]; ...
- BZOJ 1084: [SCOI2005]最大子矩阵 DP
1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ...
- 【BZOJ 1084】 1084: [SCOI2005]最大子矩阵 (DP)
1084: [SCOI2005]最大子矩阵 Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第 ...
- 【BZOJ 1084】 [SCOI2005]最大子矩阵(DP)
题链 http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩 ...
- BZOJ 1084 [SCOI2005]最大子矩阵 - 动态规划
传送门 题目大意: 从矩阵中取出k个互不重叠的子矩阵,求最大的和. 题目分析: 对于m=1,直接最大m子段和. 对于m=2: \(dp[i][j][k]\)表示扫描到第一列i和第2列j时选取了k个矩阵 ...
- BZOJ: 1084: [SCOI2005]最大子矩阵
NICE 的DP 题,明白了题解真是不错. Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1228 Solved: 622[Submit][Stat ...
随机推荐
- Git提交代码解决方案
最近做项目不再用小乌龟了,开始用git,便做了记录如下,后期可以看看自己是怎么使用的 下载安装就不说了,直接进入使用环节. 1.使用规则 git pull origin master 和 gi ...
- pc,h5端动态设置style
<p class="plan" :style="'width:' + unit"></p>
- 仿EXCEL插件,智表ZCELL产品V1.6 版本发布,增加自定义事件功能
详细请移步 智表(ZCELL)官网www.zcell.net 更新说明 这次更新主要应用户要求,主要解决了单元格值变化时事件的支持,并新增了按单元格名操作的相关API,欢迎大家体验使用. 本次版本更 ...
- XnViewer管理浏览照片、图片
有时候拍完照片想要浏览照片.浏览照片的时候想做一些标记,这个时候就需要使用照片管理器: 之前一直使用谷歌的picasa(不更新了),adobe也有个管理器(比较大):这里主要推荐一个: https:/ ...
- 无法将文件“E:\NetWorkPace\Permission\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.xml”复制到“bin\EntityFramework.xml”。对路径“bin\EntityFramework.xml”的访问被拒绝。
无法将文件“E:\NetWorkPace\Permission\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.xml”复制到“bin ...
- 数据库操作语句类型(DQL、DML、DDL、DCL)
数据库操作语句类型(DQL.DML.DDL.DCL)简介 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 1. 数据查询语言DQL 数据查询语 ...
- Metasploit3
1.之前使用的版本是Metasploit2的版本操作系统是基于Ubuntu的,渗透测测试模块也是基于metasploit的,基本上没有设置,Metasploitable3添加了很多安全机制 ,防火墙和 ...
- json格式常用操作
var data={"student":[ {"name":"zhangsan","age":11}, {"n ...
- c++ templat乱测
该上机实验环境 linux mint IDE:qt5.11 代码复制到windows下vs2017报错,提示char* 类型不能直接赋值字符串 在linux mint下可以运行,测试目的:检验复 ...
- tensorflow API _ 1 (control_flow_ops.cond)
该函数用来控制程序执行流,相当于if-else了import tensorflow as tffrom tensorflow.python.ops import control_flow_ops a ...