P2331 [SCOI2005]最大子矩阵

时间:2022-09-07 21:38:05

题目描述

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1: 复制
3 2 2
1 -3
2 3
-2 3
输出样例#1:
9
 
m=1,dp[i][j]:代表从前i项取了j个子矩阵,决策为对于第i项取不取,且如果取的话必须将其设为结尾,不能使开头
更新的话就是寻找i结尾的前驱最大值,所以还需要再for一遍

m=2,dp[i][j][k]:代表第一列到i项,第二列到j项时取了k个子矩阵,决策为对于第一列第二列i,j项取不取
更新的话跟上面一样,只不过两条列都找一遍,当然记得对于i==j这种情况特殊处理

#include<bits/stdc++.h>
using namespace std;
#define maxn 10000
typedef long long ll;
#define inf 2147483647
#define ri register int int n,m,K;
int sum1[],sum2[];
int dp1[][];
int dp2[][][];
int x,y; int main()
{
ios::sync_with_stdio(false);
// freopen("test.txt","r",stdin);
cin>>n>>m>>K;
if(m==)
{
for(int i=; i<=n; i++)
{
cin>>x;
sum1[i]=x+sum1[i-];
}
for(int i=; i<=n; i++)
for(int j=; j<=K; j++)
{
dp1[i][j]=dp1[i-][j];
for(int h=; h<=i; h++)
dp1[i][j]=max(dp1[i][j],dp1[h-][j-]+sum1[i]-sum1[h-]);
}
cout<<dp1[n][K];
return ;
}
for(int i=; i<=n; i++)
{
cin>>x>>y;
sum1[i]=sum1[i-]+x;
sum2[i]=sum2[i-]+y;
}
for(int i=; i<=n; i++)
for(int j=; j<=n; j++)
for(int k=; k<=K; k++)
{
dp2[i][j][k]=max(dp2[i-][j][k],dp2[i][j-][k]);
for(int h=; h<=i; h++)
dp2[i][j][k]=max(dp2[i][j][k],dp2[h-][j][k-]+sum1[i]-sum1[h-]);
for(int h=; h<=j; h++)
dp2[i][j][k]=max(dp2[i][j][k],dp2[i][h-][k-]+sum2[j]-sum2[h-]);
if(i==j)
for(int h=; h<=i; h++)
dp2[i][j][k]=max(dp2[i][j][k],dp2[h-][h-][k-]+sum1[i]-sum1[h-]+sum2[i]-sum2[h-]);
}
cout<<dp2[n][n][K]; return ;
}

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

  1. 洛谷P2331 &lbrack;SCOI2005&rsqb;最大子矩阵 DP

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

  2. luogu P2331 &lbrack;SCOI2005&rsqb;最大子矩阵

    传送门 \[\huge\mathit{warning}\] \[\small\text{以下说明文字高能,请心脏病,,,,,,人士谨慎观看,请未成年人在家长陪同下观看}\] 皮这一下很开心 其实是代码 ...

  3. 洛谷P2331 &lbrack;SCOI2005&rsqb; 最大子矩阵&lbrack;序列DP&rsqb;

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

  4. P2331 &lbrack;SCOI2005&rsqb;最大子矩阵 (动规:分类讨论状态)

    题目链接:传送门 题目: 题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 输入格式: 第一行为n,m,k( ...

  5. 洛谷 P2331 &lbrack;SCOI2005&rsqb;最大子矩阵

    洛谷 这一题,乍一眼看上去只想到了最暴力的暴力--大概\(n^4\)吧. 仔细看看数据范围,发现\(1 \leq m \leq 2\),这就好办了,分两类讨论. 我先打了\(m=1\)的情况,拿了30 ...

  6. 洛谷P2331&lbrack;SCOI2005&rsqb;最大子矩阵

    题目 DP 此题可以分为两个子问题. \(m\)等于\(1\): 原题目转化为求一行数列里的\(k\)块区间的和,区间可以为空的值. 直接定义状态\(dp[i][t]\)表示前i个数分为t块的最大值. ...

  7. BZOJ 1084&colon; &lbrack;SCOI2005&rsqb;最大子矩阵 DP

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

  8. 1084&colon; &lbrack;SCOI2005&rsqb;最大子矩阵

    1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1325  Solved: 670[Submit][Stat ...

  9. bzoj千题计划198:bzoj1084&colon; &lbrack;SCOI2005&rsqb;最大子矩阵

    http://www.lydsy.com/JudgeOnline/problem.php?id=1084 m=1: dp[i][j] 前i个数,选了j个矩阵的最大和 第i个不选:由dp[i-1][j] ...

随机推荐

  1. java重载与覆写

    很多同学对于overload和override傻傻分不清楚,建议不要死记硬背概念性的知识,要理解着去记忆. 先给出我的定义: overload(重载):在同一类或者有着继承关系的类中,一组名称相同,参 ...

  2. Maven-在eclipse创建maven项目

    在eclipse使用maven则需要给eclipse安装maven插件,具体安装maven插件安装相关文章 构建Maven项目 以eclipse3.6为例 1)创建简单Maven项目 点击Eclips ...

  3. Java之反射代码演示说明

    还不存在的类–即我们需要使用反射来使用的类 Person类: package com.qf.demo4; public class Person { private String name; publ ...

  4. Git命令行对照表

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  5. JavaSE学习入门

    Java基础: 1.安装JDK1.7(JDK 包括JRE,Java工具包,Java的类库) 2.编写Hello,world 程序 public class Hello{ public static v ...

  6. 玩转Spring Cloud之服务注册发现(eureka)及负载均衡消费(ribbon、feign)

    如果说用Spring Boot+Spring MVC是开发单体应用(或单体服务)的利器,那么Spring Boot+Spring MVC+Spring Cloud将是开发分布式应用(快速构建微服务)的 ...

  7. 关于xampp mysql字符编码与编译器编码不匹配问题

    今天,在php中对数据库字符字段进行查询的时候,语法之类的完全正确,但是就是查询不到结果,而在命令行中,同样的语句却能获得预期的功效.经多方面的了解之后才发现是字符编码不匹配的原因.在这里,把我的解决 ...

  8. modbus与rs485的关系&lowbar;modbus与rs485的区别和联系

    http://www.elecfans.com/tongxin/123/20180103610476.html 经常看到RS485和MODBUS写在一起,它们的区别和联系? RS485是一个物理接口, ...

  9. C&num; 反射和Type类

    一.元数据和反射 1.1 定义 大多数程序都要处理数据,包括读.写.操作和显示数据.然而,对于某些程序来说,它们操作的不是数字.文本或图形,而是程序和程序类型本身的信息. ● 有关程序及其类型的数据被 ...

  10. DataFrame WordCount

    测试数据: ** * 使用DataFrame实现WordCount */ object DataFrameWordCount { def main(args: Array[String]): Unit ...