1084: [SCOI2005]最大子矩阵

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 1325  Solved: 670
[Submit][Status]

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

 题解:看了半天不知道怎么办才好,直到发现M<=2(HansBug:呵呵你早说就俩列得了呗呵呵哒)假如这样的话那么直接根据此行俩数的不同情况讨论下不就得啦。。。情况繁一点
 program bzoj1084;

 {$mode objfpc}{$H+}

 uses
Classes, SysUtils
{ you can add units after this }; var
i,j,k,l,m,n,tot,ii,jj:longint;
b:array [..,..] of longint;
a:array [..,..,..] of longint;
begin
readln(n,m,k);
for i:= to n do for j:= to m do read(b[i,j]);
if m= then
begin
for i:= to k do
begin
a[,,i]:=-maxlongint div ;
a[,,i]:=-maxlongint div ;
end;
a[,,]:=;
for i:= to n do
for j:= to k do
begin
if a[i-,,j]>a[i-,,j] then a[i,,j]:=a[i-,,j] else a[i,,j]:=a[i-,,j];
if j= then
a[i,,j]:=-maxlongint div
else
begin
a[i,,j]:=a[i-,,j]+b[i,];
if a[i,,j]<a[i-,,j-]+b[i,] then a[i,,j]:=a[i-,,j-]+b[i,];
if (j>) and (a[i,,j]<a[i-,,j-]+b[i,]) then a[i,,j]:=a[i-,,j-]+b[i,];
end;
end;
if a[n,,k]>a[n,,k] then writeln(a[n,,k]) else writeln(a[n,,k]);
halt;
end;
for i:= to k do for j:= to do a[,j,i]:=-maxlongint div ;
a[,,]:=;
for i:= to n do
for j:= to k do
begin
for ii:= to do
case ii of
:begin
a[i,,j]:=a[i-,,j];
for jj:= to do if a[i,,j]<a[i-,jj,j] then a[i,,j]:=a[i-,jj,j];
end;
..:begin
a[i,ii,j]:=a[i-,ii,j]+b[i,ii];
for jj:= to do if (j>) and (a[i,ii,j]<a[i-,jj,j-]+b[i,ii]) then a[i,ii,j]:=a[i-,jj,j-]+b[i,ii];
if a[i,ii,j]<a[i-,,j]+b[i,ii] then a[i,ii,j]:=a[i-,,j]+b[i,ii];
end;
:begin
a[i,ii,j]:=a[i-,ii,j]+b[i,]+b[i,];
for jj:= to do if (j>=) and (a[i,ii,j]<a[i-,jj,j-]+b[i,]+b[i,]) then a[i,ii,j]:=a[i-,jj,j-]+b[i,]+b[i,];
for jj:= to do if (j>=) and (a[i,ii,j]<a[i-,jj,j-]+b[i,]+b[i,]) then a[i,ii,j]:=a[i-,jj,j-]+b[i,]+b[i,];
end;
:begin
a[i,ii,j]:=a[i-,ii,j]+b[i,]+b[i,];
for jj:= to do if (j>=) and (a[i,ii,j]<a[i-,jj,j-]+b[i,]+b[i,]) then a[i,ii,j]:=a[i-,jj,j-]+b[i,]+b[i,];
end;
end;
end;
tot:=-maxlongint div ;
for i:= to do if tot<a[n,i,k] then tot:=a[n,i,k];
writeln(tot);
end.

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

  1. BZOJ 1084: [SCOI2005]最大子矩阵 DP

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

  2. 【BZOJ 1084】 1084: [SCOI2005]最大子矩阵 (DP)

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

  3. BZOJ(6) 1084: [SCOI2005]最大子矩阵

    1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3566  Solved: 1785[Submit][Sta ...

  4. 【BZOJ】1084: [SCOI2005]最大子矩阵(DP)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1084 有一个1A--- 本题没看懂,,不会啊囧..感觉完全设不了状态..看了题解,囧,m<=2 ...

  5. [BZOJ 1084] [SCOI2005] 最大子矩阵 【DP】

    题目链接:BZOJ - 1084 题目分析 我看的是神犇BLADEVIL的题解. 1)对于 m = 1 的情况, 首先可能不取 Map[i][1],先 f[i][k] = f[i - 1][k];   ...

  6. BZOJ 1084 [SCOI2005]最大子矩阵 - 动态规划

    传送门 题目大意: 从矩阵中取出k个互不重叠的子矩阵,求最大的和. 题目分析: 对于m=1,直接最大m子段和. 对于m=2: \(dp[i][j][k]\)表示扫描到第一列i和第2列j时选取了k个矩阵 ...

  7. BZOJ: 1084: [SCOI2005]最大子矩阵

    NICE 的DP 题,明白了题解真是不错. Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1228  Solved: 622[Submit][Stat ...

  8. 1084: [SCOI2005]最大子矩阵 - BZOJ

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

  9. 1084. [SCOI2005]最大子矩阵【网格DP】

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

随机推荐

  1. UED大全

    http://www.baiduux.com/  百度UFOhttp://ued.sohu.com/  搜狐UEDhttp://ued.taobao.com/  淘宝UEDhttp://www.ued ...

  2. win7如何安装mircosoft SDKs

    WIN7不能安装SDK 7.1是因为系统程序里含Microsoft .NET Framework 4 Extended和Microsoft .NET Framework 4 Client Profil ...

  3. Flex移动应用程序开发的技巧和窍门(二)

    范例文件 flex-mobile-dev-tips-tricks-pt2.zip 这是关于Flex移动应用程序开发的技巧和窍门的一系列文章中的第二部分.第一部分 内容主要集中讨论了视图之间以及应用程序 ...

  4. 基于Daydream technical preview GVR13开发Daydream,Cardboard的Android应用

    本文用Unity的Daydream Preview GVR13版本开发同时兼容Daydream和Cardboard的Android应用,Android Studio版本为2.2.3. 下载最新Dayd ...

  5. 初识JSON

    ▓▓▓▓▓▓ 大致介绍 JSON(JavaScript Object Notation  JavaScript对象表示法),JSON是一种数据格式,不是一种编程语言.虽然它的名字中有JavaScrip ...

  6. HDU3410(单调队列)

    Passing the Message Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  7. boneCP的连接管理

    boneCP连接的实现 boneCP自己实现了标准的java.sql.Connection接口,除了会持有Connection对象之外,还会拥有一些属性用于标记连接的创建时间,空闲时间等. 比较重要的 ...

  8. 解决使用Idea/Eclipse编写Hadoop程序包依赖问题

    解决使用Idea/Eclipse编写Hadoop程序包依赖问题 解决包依赖的一种简单粗暴方法就是, 把下载下来的Hadoop压缩包解压, 搜索里面所有的额jar包文件,然后复制到一个目录,在使用Ide ...

  9. Oracle_关联查询

    1. 等值连接(Equijoin).非等值连接(Non-Equijoin).外连接(Outer join):-->左外连接-->右外连接.自连接(Self join) 交叉连接(Cross ...

  10. java_JDBC字段对应

    地址: http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/datacc.htm ...