1084. [SCOI2005]最大子矩阵【网格DP】
Description
这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵
不能相互重叠。
Input
第一行为n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的
分值的绝对值不超过32767)。
Output
只有一行为k个子矩阵分值之和最大为多少。
Sample Input
1 -3
2 3
-2 3
Sample Output
9
果然DP还是需要多练……
f[i][j][p]保存当第i行为p状态时选了j个正方形的最大值
p=1这一行只选左边
p=2这一行只选右边
p=3这一行选两个(但两个为独立的)
p=4这一行选两个(两个并在一起)
#include<iostream>
#include<cstring>
using namespace std; int max5(int a,int b,int c,int d,int e)
{
return max(max(a,b),max(max(c,d),e));
}
int max3(int a,int b,int c)
{
return max(max(a,b),c);
}
int f[][][],n,m,k,x,y,z;
int main()
{
cin>>n>>m>>k;
if (m==)
{
for (int i=;i<=n;++i)
{
cin>>x;
for (int j=;j<=k;++j)
{
f[i][j][]=max(f[i-][j][],f[i-][j][]);
f[i][j][]=max(f[i-][j][],f[i-][j-][])+x;
}
}
cout<<max(f[n][k][],f[n][k][]);
}
else
{
memset(f,-0x3f,sizeof(f));
for(int i=;i<=n;i++)
for(int j=;j<=k;j++)
f[i][j][]=;
for (int i=;i<=n;++i)
{
cin>>x>>y;
z=x+y;
for (int j=;j<=k;++j)
{
f[i][j][]=max5(f[i-][j][],f[i-][j][],f[i-][j][],f[i-][j][],f[i-][j][]);
f[i][j][]=max5(f[i-][j-][]+x,f[i-][j][]+x,f[i-][j-][]+x,f[i-][j][]+x,f[i-][j-][]+x);
f[i][j][]=max5(f[i-][j-][]+y,f[i-][j-][]+y,f[i-][j][]+y,f[i-][j][]+y,f[i-][j-][]+y);
f[i][j][]=max3(f[i-][j-][]+z,f[i-][j-][]+z,f[i-][j][]+z);
if (j>=)f[i][j][]=max3(f[i][j][],f[i-][j-][]+z,f[i-][j-][]+z);
f[i][j][]=max5(f[i-][j-][]+z,f[i-][j-][]+z,f[i-][j-][]+z,f[i-][j-][]+z,f[i-][j][]+z); }
}
cout<<max5(f[n][k][],f[n][k][],f[n][k][],f[n][k][],f[n][k][]);
}
}
1084. [SCOI2005]最大子矩阵【网格DP】的更多相关文章
- 【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 有一个1A--- 本题没看懂,,不会啊囧..感觉完全设不了状态..看了题解,囧,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】
分情况讨论,m=1的时候比较简单,设f[i][j]为到i选了j个矩形,前缀和转移一下就行了 m=2,设f[i][j][k]为1行前i个,2行前j个,一共选了k个,i!=j的时候各自转移同m=1,否则转 ...
- BZOJ 1084: [SCOI2005]最大子矩阵 DP
1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ...
- 1084: [SCOI2005]最大子矩阵
1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1325 Solved: 670[Submit][Stat ...
- BZOJ(6) 1084: [SCOI2005]最大子矩阵
1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3566 Solved: 1785[Submit][Sta ...
- 【BZOJ 1084】 [SCOI2005]最大子矩阵(DP)
题链 http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩 ...
- [bzoj1084][SCOI2005]最大子矩阵(DP)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1084 分析: m=1时:相当于只有一行数,让你取出p段,使得总和最大 明显可以DP,f ...
随机推荐
- java8 lambda 表达式
lambada 表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于实现由函数式接口定义的唯一抽象方法 使用 lambda 表达式时,会创建实现了函数式接口的一个匿名类实例 可以将 lambda ...
- node、npm的安装和环境变量的配置
在使用node过程中踩过好几次坑,这次记录下来,以防以后在掉下去. 用npm安装nrm模块后,输入nrm 提示 “nrm”不是内部或外部命令,也不是可运行的程序.我就奇怪了,安装成功了,怎么还提示不是 ...
- 微信小程序之雪碧图(css script)
今天有朋友问我关于微信小程序中如何在不占用大量网络带宽的情况下快速加载图片,我给他推荐了两种方式 1.雪碧图(css script),有过前端经验的朋友应该都有接触过. 2.懒加载. 由于时间关系我就 ...
- Django基础七之Ajax
一 Ajax简介 1.简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”.即使用Javascript语言与服务器进行异 ...
- vue三要素及底层实现机制
深入解析Vue 我们首先来熟悉一下我们这个文档所学习内容的流程. 先对比一下jQuery和Vue的区别,再讲述Vue的MVVM模型,接着讲解Vue的实现流程. 当然,我是不相信没有对比哪来的伤害,没有 ...
- css实现div不定宽高垂直水平居中解决方案
在项目中我们经常能碰见然图片垂直水平居中,不定宽高的div垂直水平居中,等等~~ 现在我将介绍我所知道的几种用css来解决的几种方案. 1.父元素text-align:center;display:t ...
- CSS之换行
在项目中,常常遇到一些问题,可以通过CSS来快速解决,比如受到布局影响会导致内容溢出,这个时候就可以使用CSS换行解决 自动换行: { word-wrap:break-word; } 强制不换行: { ...
- 程序控制结构及for循环、foreach循环、迭代器
结构化程序设计 三种基本控制结构:顺序结构.选择结构.循环结构. 在这种思想的指导下,发展出了面向过程编程方式.面向过程编程的核心是算法+数据结构.算法可以用顺序.选择.循环这三种基本控制结构来实现. ...
- Pig是轻类型的
总体来说Pig是“强类型”的,但Pig又允许用户不指定输入数据的类型,而可以自己根据用户的使用方式进行推测. 称Pig是“轻类型”的更合适,它确实对类型有严格的要求,但是如果没有明确定义类型也是可以处 ...
- python中的字符串编码问题——1.理解编码和解码问题
理解编码与解码(python2.7):1)编码 是根据一个想要的编码名称,把一个字符串翻译为其原始字节形式.>>> u_str=u'字符串编码aabbbcccddd'>> ...