描述


http://www.lydsy.com/JudgeOnline/problem.php?id=1084

给出一个n*m的矩阵,其中m<=2,取k个子矩阵,求最大子矩阵和.

分析


1.m=1时

dp[i][k]表示在前i列里面选k个的最优解.那么对于第i列,有选和不选两种可能.则有:

dp[i][k]=max(dp[i-1][k],max{dp[x][k-1]+s1[i]-s1[x]}(0<x<i))

2.m=2时

dp[i][j][k]表示第一行前i列,第二行前j列选k个的最优解.那么可以分开考虑每一行的那一列选不选的情况,最后如果i==j,还要考虑两列一起选的情况.则有:

dp[i][j][k]=max(dp[i-1][j][k],dp[i][j-1][k],max{dp[x][j][k-1]+s1[i]-s1[x]}(0<x<i),max{dp[i][x][k-1]+s2[j]-s2[x]}(0<x<j),max{dp[x][x][k-1]+s1[i]-s1[x]+s2[j]-s2[x]}(0<x<i,0<x<j)))

 #include <bits/stdc++.h>
using namespace std; const int maxn=+;
int n,m,K;
int s[][maxn];
int dp1[maxn][],dp2[maxn][maxn][];
int main(){
scanf("%d%d%d",&n,&m,&K);
for(int i=;i<=n;i++)for(int j=;j<m;j++){
int t; scanf("%d",&t);
s[j][i]=s[j][i-]+t;
}
if(m==){
for(int i=;i<=n;i++)for(int k=;k<=K;k++){
dp1[i][k]=dp1[i-][k];
for(int x=;x<i;x++) dp1[i][k]=max(dp1[i][k],dp1[x][k-]+s[][i]-s[][x]);
}
printf("%d\n",dp1[n][K]);
}
else{
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 x=;x<i;x++) dp2[i][j][k]=max(dp2[i][j][k],dp2[x][j][k-]+s[][i]-s[][x]);
for(int x=;x<j;x++) dp2[i][j][k]=max(dp2[i][j][k],dp2[i][x][k-]+s[][j]-s[][x]);
if(i==j)for(int x=;x<i;x++) dp2[i][j][k]=max(dp2[i][j][k],dp2[x][x][k-]+s[][i]-s[][x]+s[][j]-s[][x]);
}
printf("%d\n",dp2[n][n][K]);
}
return ;
}

1084: [SCOI2005]最大子矩阵

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2115  Solved: 1049
[Submit][Status][Discuss]

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

3 2 2
1 -3
2 3
-2 3

Sample Output

9

HINT

Source

BZOJ_1084_[SCOI2005]_最大子矩阵_(动态规划)的更多相关文章

  1. Spring_MVC_教程_快速入门_深入分析

    Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...

  2. 基于samba实现win7与linux之间共享文件_阳仔_新浪博客

    基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.

  3. 浅谈 Underscore.js 中 _.throttle 和 _.debounce 的差异

    Underscore.js是一个很精干的库,压缩后只有5.2KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程. 本文仅探讨Underscore.js的两个 ...

  4. CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站

    CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站 CLOSE-UP FORMA ...

  5. 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线【图】_品牌资讯_服饰_太平洋时尚网

    聚焦设计交易与商业落地 DANG·DHUB设计师平台上线[图]_品牌资讯_服饰_太平洋时尚网 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线

  6. 联系我们_你我想法_【有男度】UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站

    联系我们_你我想法_[有男度]UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站 联系我们 2012-02-17   国内北京公司总部  邮编 ...

  7. Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松!

    Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松!       首页 / 关于 ...

  8. 北京西服定做_衬衫定制_关于我们_Dimoon TLR.

    北京西服定做_衬衫定制_关于我们_Dimoon TLR.

  9. MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载

    MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载  武侠类手机文字游戏,经典再现高度自由玩法宠物 自制装备 师徒自立门派 自造武功欢迎来玩 Q群 1 ...

随机推荐

  1. How to debug Custom Action DLL

    在MSI工程中,经常会遇到这样的情况: MSI 工程需要调用DLL(C++)中的一个函数实现某些特殊或者复杂的功能,通常的做法是在Custom Action 中调用该DLL . 那么在安装过程中,该C ...

  2. 第9条:覆盖equals时总要覆盖hashCode

    在每个覆盖equals方法的类中,也必须覆盖hashCode方法.否则,会违反Object.hashCode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常工作,包括HashMap,Hash ...

  3. HTML5之 离线数据存储

    --- Storage接口 无论是sessionStorage还是localStorage 属性/方法 返回值 描述 ----------------------------------------- ...

  4. HPDL380G8平台11.2.0.3 RAC实施手册

    HPDL380G8平台11.2.0.3 RAC实施手册   1 前言 此文档详细描述了Oracle 11gR2 数据库在HPDL380G上的安装RAC的检查及安装步骤.文档中#表示root用户执行,$ ...

  5. ASP.NET取得Request URL的各个部分

    我們在開發網頁應用程式,時常需要去解析網址(Request.Url)的每個片段,進行一些判斷.例如說 "http://localhost:1897/News/Press/Content.as ...

  6. linux 配置Socks5

    1.配置 Socks5 编译环境. yum -y install gcc automake autoconf libtool make 2.安装 Socks5 需要的包. yum -y install ...

  7. 超过130个你需要了解的vim命令

    基础 :e filename Open filename for edition :w Save file :q Exit Vim :q! Quit without saving :x Write f ...

  8. Ajax跨域请求——PHP服务端处理

    header('Access-Control-Allow-Origin:*'); // 响应类型 header('Access-Control-Allow-Methods:POST'); // 响应头 ...

  9. C# 中关闭当前线程的四种方式 .

    .net类库已经帮助我们实现了窗口的关闭,如果此窗口是系统的主窗口,关闭此窗口即应该退出了整个应用程序.但事实上有时候并不是这样的,关闭窗口,只是停止了当前窗口的消息循环.系统主窗口,实质上是Main ...

  10. 【转】c#文件操作大全(一)

    1.创建文件夹//using System.IO;Directory.CreateDirectory(%%1); 2.创建文件//using System.IO;File.Create(%%1); 3 ...