传送门

题目大意:

从矩阵中取出k个互不重叠的子矩阵,求最大的和。

题目分析:

对于m=1,直接最大m子段和。

对于m=2:

\(dp[i][j][k]\)表示扫描到第一列i和第2列j时选取了k个矩阵的答案。

有3中转移:第一列取一段,第二列取一段,两列一起取一个宽度为2的矩阵。

\[dp[i][j][k] = max(dp[i-1][j][k], dp[i][j-1][k], max\{dp[p][j][k-1]\} + s[1][i] - s[1][p], max\{dp[i][p][k-1]\} + s[2][i] - s[2][p], dp[p][p][k-1] + s[1][i] - s[1][p] + s[2][i] - s[2][p] (i == j时))
\]

code

#include<bits/stdc++.h>
using namespace std; const int N = 105;
int n, m, k, dp2[N][N][15], matrix[N][10], sum[5][N], dp1[N][15]; inline void solve2(){
memset(dp2, -0x3f3f3f3f, sizeof dp2);
for(int i = 0; i <= n; i++)
for(int j = 0; j <= n; j++)
dp2[i][j][0] = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++){
for(int l = 1; l <= k; l++){
dp2[i][j][l] = max(dp2[i][j - 1][l], dp2[i - 1][j][l]);
for(int p = 0; p <= i - 1; p++)
dp2[i][j][l] = max(dp2[i][j][l], dp2[p][j][l - 1] + sum[1][i] - sum[1][p]);
for(int p = 0; p <= j - 1; p++)
dp2[i][j][l] = max(dp2[i][j][l], dp2[i][p][l - 1] + sum[2][j] - sum[2][p]);
if(i == j){
for(int p = 0; p <= i - 1; p++)
dp2[i][j][l] = max(dp2[i][j][l], dp2[p][p][l - 1] + sum[1][i] - sum[1][p] + sum[2][i] - sum[2][p]);
}
}
}
cout<<dp2[n][n][k];
} inline void solve1(){
memset(dp1, -0x3f3f3f3f, sizeof dp1);
for(int i = 0; i <= n; i++) dp1[i][0] = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= k; j++){
dp1[i][j] = dp1[i - 1][j];
for(int p = 0; p <= i - 1; p++)
dp1[i][j] = max(dp1[i][j], dp1[p][j - 1] + sum[1][i] - sum[1][p]);
}
cout<<dp1[n][k]<<endl;
} int main(){
scanf("%d%d%d", &n, &m, &k);
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++)
scanf("%d", &matrix[i][j]);
sum[1][i] = sum[1][i - 1] + matrix[i][1];
sum[2][i] = sum[2][i - 1] + matrix[i][2];
}
// for(int i = 1; i <= n; i++) cout<<sum[1][i]<<" "<<sum[2][i]<<endl;
if(m == 1) solve1();
else if(m == 2) solve2();
return 0;
}

BZOJ 1084 [SCOI2005]最大子矩阵 - 动态规划的更多相关文章

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

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

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

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

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

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

  4. 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,否则转 ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 【AtCoder Beginner Contest 074 D】Restoring Road Network

    [链接]h在这里写链接 [题意] 给你任意两点之间的最短路. 让你求出原图. 或者输出原图不存在. 输出原图的边长总和的最小值. [题解] floyd算法. 先在原有的矩阵上. 做一遍floyd. 如 ...

  2. TOMCAT8009端口与AJP13协议

    Tomcat最主要的功能是提供Servlet/JSP容器,尽管它也可以作为独立的Java Web服务器,它在对静态资源(如HTML文件或图像文件)的处理速度,以及提供的Web服务器管理功能方面都不如其 ...

  3. mysql 配置,还得多看看~

    http://blog.chinaunix.net/uid-20639775-id-154429.html

  4. CSS3实现的立体button

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 函数的引用透明性(referential transparency)

    1. 基础 初学程序设计时,比较容易混淆的两个概念是数学函数(math function)和程序中使用的函数. 在数学函数中 y=f(x),一个输入值有固定的输出值.例如,无论计算多少次,sinπ 的 ...

  6. JavaScript系列--JavaScript数组高阶函数reduce()方法详解及奇淫技巧

    一.前言 reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值. reduce() 可以作为一个高阶函数,用于函数的 compose. reduce()方 ...

  7. [TypeScript] Define a function type

    type DigitValidator = (char) => boolean; -]{}/.test(char); export const digitValidators: {[key: s ...

  8. IIS7配置PHP图解

    IIS6整合PHP详解:http://zhidao.zgsj.com/article/8/2011118142648.shtml PHP5.2.17 官方下载: http://windows.php. ...

  9. php 发送QQ邮箱邮件

    这是我的源码比较简陋 https://www.lanzous.com/i2l7h8f 感谢 https://www.cnblogs.com/woider/p/6980456.html 下载phpmai ...

  10. HDU 1425 sort hash+加速输入

    http://acm.hdu.edu.cn/showproblem.php?pid=1425 题目大意: 给你n个整数,请按从大到小的顺序输出其中前m大的数. 其中n和m都是位于[-500000,50 ...