乍一看这题好难,根本不会;

直到看到1<=m<=2……

显然分类讨论dp,

很快想到这题的dp和poj2430相类似

m=2的时候f[i,j,k]表示到第i行用了j个矩阵结尾状态为k时最大权值和

k=0~4表示5种结尾可能的状态

转移很类似poj2430,这里就不赘述了

 const inf=;
var f:array[..,..,..] of longint;
    a:array[..,..] of longint;
    ans,i,j,p,k,n,m:longint; function max(a,b:longint):longint;
  begin
    if a>b then exit(a) else exit(b);
  end; begin
  readln(n,m,k);
  for i:= to n do
    for j:= to m do
      read(a[i,j]);
  if m= then
  begin
    for i:= to k do
    begin
      f[,i,]:=-inf;
      f[,i,]:=-inf;
    end;
    f[,,]:=a[,];
    f[,,]:=;
    for i:= to n do
    begin
      for j:= to k do
      begin
        f[i,j,]:=max(f[i-,j,],f[i-,j,]);
        if j= then f[i,j,]:=-inf
        else f[i,j,]:=max(max(f[i-,j,],f[i-,j-,]),f[i-,j-,])+a[i,];
      end;
    end;
    writeln(max(f[n,k,],f[n,k,]));
  end
  else begin
    for i:= to k do
      for j:= to do
        f[,i,j]:=-inf;
    f[,,]:=;
    f[,,]:=a[,];
    f[,,]:=a[,];
    f[,,]:=a[,]+a[,];
    f[,,]:=a[,]+a[,];
    for i:= to n do
      for j:= to k do
      begin
        f[i,j,]:=-inf;
        for p:= to do
          f[i,j,]:=max(f[i,j,],f[i-,j,p]);         if j= then
        begin
          for p:= to do
            f[i,j,p]:=-inf;
          continue;
        end;
        f[i,j,]:=f[i-,j-,];
        f[i,j,]:=max(f[i,j,],max(f[i-,j,],f[i-,j-,]));
        f[i,j,]:=max(f[i,j,],max(f[i-,j-,],f[i-,j-,]));
        f[i,j,]:=max(f[i,j,],max(f[i-,j,],f[i-,j-,]))+a[i,];         f[i,j,]:=f[i-,j-,];
        f[i,j,]:=max(f[i,j,],max(f[i-,j,],f[i-,j-,]));
        f[i,j,]:=max(f[i,j,],max(f[i-,j-,],f[i-,j-,]));
        f[i,j,]:=max(f[i,j,],max(f[i-,j,],f[i-,j-,]))+a[i,];         f[i,j,]:=max(f[i-,j-,],f[i-,j,]);
        for p:= to do
          f[i,j,]:=max(f[i,j,],f[i-,j-,p]);
        f[i,j,]:=f[i,j,]+a[i,]+a[i,];         if j< then
        begin
          f[i,j,]:=-inf;
          continue;
        end;
        f[i,j,]:=f[i-,j,];
        f[i,j,]:=max(f[i,j,],max(f[i-,j-,],f[i-,j-,]));
        f[i,j,]:=max(f[i,j,],f[i-,j-,]);
        f[i,j,]:=max(f[i,j,],max(f[i-,j-,],f[i-,j-,]))+a[i,]+a[i,];
      end;
    ans:=-inf;
    for i:= to do
      ans:=max(ans,f[n,k,i]);
    writeln(ans);
  end;
end.

bzoj1084的更多相关文章

  1. 【BZOJ1084】最大子矩阵(动态规划)

    [BZOJ1084]最大子矩阵(动态规划) 题面 题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 输入格式 ...

  2. BZOJ1084 [SCOI2005]最大子矩阵 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1084 题意概括 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注 ...

  3. [bzoj1084][SCOI2005]最大子矩阵_动态规划_伪·轮廓线dp

    最大子矩阵 bzoj-1084 SCOI-2005 题目大意:给定一个n*m的矩阵,请你选出k个互不重叠的子矩阵使得它们的权值和最大. 注释:$1\le n \le 100$,$1\le m\le 2 ...

  4. 【bzoj1084】最大子矩阵

    题意 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. \(1≤n≤100,1≤m≤2,1≤k≤10\) 分析 由于\(m\)只有两 ...

  5. bzoj1084: [SCOI2005]最大子矩阵

    dp.状态转移方程在代码里 #include<cstdio> #include<algorithm> #include<cstring> using namespa ...

  6. BZOJ1084或洛谷2331 [SCOI2005]最大子矩阵

    BZOJ原题链接 洛谷原题链接 注意该题的子矩阵可以是空矩阵,即可以不选,答案的下界为\(0\). 设\(f[i][j][k]\)表示前\(i\)行选择了\(j\)个子矩阵,选择的方式为\(k\)时的 ...

  7. bzoj千题计划198:bzoj1084: [SCOI2005]最大子矩阵

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

  8. bzoj1084&&洛谷2331[SCOI2005]最大子矩阵

    题解: 分类讨论 当m=1的时候,很简单的dp,这里就不再复述了 当m=2的时候,设dp[i][j][k]表示有k个子矩阵,第一列有i个,第二列有j个 然后枚举一下当前子矩阵,状态转移 代码: #in ...

  9. bzoj1084: [SCOI2005]最大子矩阵 dp

    这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 题解:m很小分类讨论,m==1时怎么搞都可以,m==2时,dp[i][j][k]表 ...

随机推荐

  1. ios专题 - objc runtime 动态增加属性

    objective-c中,有类别可以在不修改源码的基础上增加方法:近排在看别人的开源代码时,发现还可以动态增加属性.而且是在运行时,太牛B了. 使用运行时库,必须要先引入 objc/runtime.h ...

  2. javascript RegExp类型 学习小记

    在js里面,可以有两种方法来定义正则表达式,第一种是通过字变量的形式,第二种则是通过构造函数的形式: 1 字变量形式,格式是长这样子的 var expression = /pattern/flag p ...

  3. activemq spring 配置

    Apache ActiveMQ是最流行和最强大的开源消息集成模式服务器.Apache ActiveMQ是速度快,支持多跨语言的客户端和协议,带有易于使用企业集成模式和许多先进的功能在充分支持JMS 1 ...

  4. I Take It All Back: Using Windows Installer (MSI) Rollback Actions

    Original Link: http://blogs.flexerasoftware.com/installtalk/2011/10/i-take-it-all-back-using-windows ...

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

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

  6. 轻松解决fedora21装完NVIDIA显卡驱动后无法进入gnome问题

    本来打算昨天写的,最近感冒了,打点滴,耽搁了! 我用的是联想14寸笔记本,装好了fedora21后,想装个NVIDIA显卡驱动试试,结果和很多人一样无法进入gnome界面,搞了三四个小时终于搞定.下面 ...

  7. Navicat for mysql远程连接数据库详(1130错误解决方法)

    用Navicat for mysql连接数据库测试下连接 如果出现1130错误错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to ...

  8. busbox编译出错,arm-linux-未找到命令

    1.问题:/opt/FriendlyARM/mini6410/linux/busybox-1.17.2/scripts/gcc-version.sh: 行 11: arm-linux-gcc: 未找到 ...

  9. linux系统下的shell脚本

    #!/bin/bash  说明我需要启用bin目录下的bash解释器解释脚本##将第一个文件拷贝到第二个文件,如果出错将错误输出到/dev/null 的空.if判断cp的返回值是否为1,1为成功,0为 ...

  10. vim emmet配置

    http://nerd-is.in/2013-12/learning-vim-again-1-install-vundle/ http://nerd-is.in/2013-12/learn-vim-a ...